Maven构建Spring4.x项目

      
       4.3.7.RELEASE  
      
      
          
          
            org.springframework  
            spring-aop  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-aspects  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-beans  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-context  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-context-support  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-core  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-expression  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-instrument  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-instrument-tomcat  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-jdbc  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-jms  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-messaging  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-orm  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-oxm  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-test  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-tx  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-web  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-webmvc  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-webmvc-portlet  
            ${org.springframework.version}  
          
          
            org.springframework  
            spring-websocket  
            ${org.springframework.version}  
          
          
    

 

很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下一次创建相同类型的工程时也不知道要配置哪些spring的依赖,只有拷贝,其实,当初我就是这么干的!

  spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以,搞清楚它们之间的关系,配置maven依赖就可以简洁明了

接下来我们以spring 3.2.17.RELEASE版本为例,介绍spring框架结构,spring 4稍有不同,将在最后介绍

  spring官网给出了一张spring3的结构图

  图中将spring分为5个部分:core、aop、data access、web、test,图中每个圆角矩形都对应一个jar,如果在maven中配置,所有这些jar的“groupId”都是“org.springframework”,每个jar有一个不同的“artifactId”,另外,“instrumentation”有两个jar,还有一个“spring-context-support”图中没有列出,所以spring3的jar包一共是19个

  下面介绍这5个部分的jar以及依赖关系

core

  core部分包含4个模块

  1. spring-core:依赖注入IoC与DI的最基本实现
  2. spring-beans:Bean工厂与bean的装配
  3. spring-context:spring的context上下文即IoC容器
  4. spring-expression:spring表达式语言

  它们的完整依赖关系

  因为spring-core依赖了commons-logging,而其他模块都依赖了spring-core,所以整个spring框架都依赖了commons-logging,如果有自己的日志实现如log4j,可以排除对commons-logging的依赖,没有日志实现而排除了commons-logging依赖,编译报错

1

2

3

4

5

6

7

8

9

10

11

<dependency>

    <groupId>org.springframeworkgroupId>

    <artifactId>spring-contextartifactId>

    <version>3.2.17.RELEASEversion>

    <exclusions>

        <exclusion>

            <groupId>commons-logginggroupId>

            <artifactId>commons-loggingartifactId>

        exclusion>

    exclusions>

dependency>

aop

  aop部分包含4个模块

  1. spring-aop:面向切面编程
  2. spring-aspects:集成AspectJ
  3. spring-instrument:提供一些类级的工具支持和ClassLoader级的实现,用于服务器
  4. spring-instrument-tomcat:针对tomcat的instrument实现

  它们的依赖关系

data access

  data access部分包含5个模块

  1. spring-jdbc:jdbc的支持
  2. spring-tx:事务控制
  3. spring-orm:对象关系映射,集成orm框架
  4. spring-oxm:对象xml映射
  5. spring-jms:java消息服务

  它们的依赖关系

web

  web部分包含4个模块

  1. spring-web:基础web功能,如文件上传
  2. spring-webmvc:mvc实现
  3. spring-webmvc-portlet:基于portlet的mvc实现
  4. spring-struts:与struts的集成,不推荐,spring4不再提供

  它们的依赖关系

test

  test部分只有一个模块,我将spring-context-support也放在这吧

  1. spring-test:spring测试,提供junit与mock测试功能
  2. spring-context-support:spring额外支持包,比如邮件服务、视图解析等

  它们的依赖关系

  到这里,spring3的介绍就完了,看着这些图我相信你在maven中配置spring依赖时不会再混乱了

  下面介绍spring4,与spring3结构基本相同,下面是官网给出的结构图

  可以看到,图中去掉了spring3的struts,添加了messaging和websocket,其他模块保持不变,因此,spring4的jar有20个

  1. spring-websocket:为web应用提供的高效通信工具
  2. spring-messaging:用于构建基于消息的应用程序

  它们的依赖关系

 

总结:Spring需要的Maven依赖

1、普通项目(非web)

  导入spring-support、spring-aspecs、spring-orm、spring-test

2、web项目

  导入spring-webmvc、spring-aspecs、spring-orm、spring-test

注意:以上只适合单个maven项目使用,如果是分布式系统,父工程统一管理j依赖包版本,至少需要以下几个:

  spring-support、spring-aspects、spring-orm、spring-web、spring-webmvc

  可选:spring-test、spring-oxm、spring-jms、spring-messaging

最好是全部加上,省的出错。

 

pom.xml


	4.0.0
	com.mytest
	springMVC
	war
	0.0.1-SNAPSHOT

	springMVC Maven Webapp

	http://maven.apache.org

	
		UTF-8
		3.8.1
		1.7.26
		1.2.17
		2.8.9
		4.3.22.RELEASE
	

	
		
			junit
			junit
			4.12
			test
		

		

		
		
			mysql
			mysql-connector-java
			5.1.47
		

		
			c3p0
			c3p0
			0.9.1.2
		

		
		
			com.alibaba
			druid
			1.1.14
		

		
		
			org.mybatis
			mybatis
			3.4.6
		

		
		
			org.mybatis.generator
			mybatis-generator-core
			1.3.7
		

		
		
		
			org.mybatis
			mybatis-spring
			1.3.2
		

		

		

		
		
		
			org.springframework
			spring-core
			${spring.version}
		

		
		
		
			org.springframework
			spring-beans
			${spring.version}
		

		
		
		
			org.springframework
			spring-aop
			${spring.version}
		

		
		
		
			org.springframework
			spring-context
			${spring.version}
		

		
		
		
			org.springframework
			spring-context-support
			${spring.version}
		

		
			org.springframework
			spring-aspects
			${spring.version}
		

		
		
		
			org.springframework
			spring-web
			${spring.version}
		

		
		
		
		
			org.springframework
			spring-webmvc
			${spring.version}
		

		
		
		
			org.springframework
			spring-tx
			${spring.version}
		

		
		
		
			org.springframework
			spring-jdbc
			${spring.version}
		

		
		

		
			org.springframework
			spring-expression
			${spring.version}
		

		

		

		
		
		
			aopalliance
			aopalliance
			1.0
		

		
		
			org.aspectj
			aspectjrt
			1.8.9
		

		
		
		
			org.aspectj
			aspectjweaver
			1.8.13
		

		
			org.aspectj
			aspectjtools
			1.8.9
		

		

		
			cglib
			cglib
			3.2.10
		

		


		
		

		
			org.slf4j
			slf4j-api
			${slf4j.version}
		

		
			org.slf4j
			slf4j-log4j12
			${slf4j.version}
		


		

		

		
		
		
			commons-io
			commons-io
			2.6
		


		
		
			commons-logging
			commons-logging
			1.2
		


		
		
		
		
			commons-fileupload
			commons-fileupload
			1.3.1
		


		
		
			commons-codec
			commons-codec
			1.12
		

		
		
			org.apache.commons
			commons-lang3
			${commons-lang.version}
		

		
		
			org.apache.commons
			commons-collections4
			4.2
		

		
			commons-beanutils
			commons-beanutils
			1.9.3
		

		

		

		
		
		
			com.fasterxml.jackson.core
			jackson-core
			${jackson.version}
		

		
		
		
			com.fasterxml.jackson.core
			jackson-annotations
			${jackson.version}
		

		
		
		
			com.fasterxml.jackson.core
			jackson-databind
			${jackson.version}
		

		
			com.alibaba
			fastjson
			1.2.56
		


		

		

		
		
		
			javax.servlet
			jstl
			1.2
			jar
			compile
		

		
			javax.servlet
			javax.servlet-api
			3.1.0
			provided
		

		
			javax.servlet.jsp
			javax.servlet.jsp-api
			2.3.3
			provided
		

		

		
			org.apache.maven.plugins
			maven-clean-plugin
			2.4.1
		

	

	
		springMVC
	

maven settings.xml 加入如下设置


  jdk-1.8
  
    true
    1.8
  
  
    1.8
    1.8
    1.8
  

 

servlet web.xml 的schema头部声明

  

 

你可能感兴趣的:(spring)