博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven构建Spring4.x项目
阅读量:4131 次
发布时间:2019-05-25

本文共 12529 字,大约阅读时间需要 41 分钟。

  
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.springframework</groupId>

    <artifactId>spring-context</artifactId>

    <version>3.2.17.RELEASE</version>

    <exclusions>

        <exclusion>

            <groupId>commons-logging</groupId>

            <artifactId>commons-logging</artifactId>

        </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头部声明

 

转载地址:http://jrbvi.baihongyu.com/

你可能感兴趣的文章
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
JAVA数据类型
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
Jackson Tree Model Example
查看>>
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
Android使用webservice客户端实例
查看>>
[转]C语言printf
查看>>
C 语言 学习---获取文本框内容及字符串拼接
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>