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部分包含4个模块
它们的完整依赖关系
因为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 |
|
aop部分包含4个模块
它们的依赖关系
data access部分包含5个模块
它们的依赖关系
web部分包含4个模块
它们的依赖关系
test部分只有一个模块,我将spring-context-support也放在这吧
它们的依赖关系
到这里,spring3的介绍就完了,看着这些图我相信你在maven中配置spring依赖时不会再混乱了
下面介绍spring4,与spring3结构基本相同,下面是官网给出的结构图
可以看到,图中去掉了spring3的struts,添加了messaging和websocket,其他模块保持不变,因此,spring4的jar有20个
它们的依赖关系
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头部声明