Java web项目创建笔记2 之《springmvc基础配置》
spring4框架:
参考文档:https://docs.spring.io/spring/docs/4.3.22.RELEASE/spring-framework-reference/htmlsingle/#spring-introduction
API文档:https://docs.spring.io/spring/docs/4.3.22.RELEASE/javadoc-api/
spring5框架:
参考文档:https://docs.spring.io/spring/docs/5.1.5.RELEASE/spring-framework-reference/
API文档:https://docs.spring.io/spring/docs/5.1.5.RELEASE/javadoc-api/
1、引入spring框架jar包
那些包需要引入呢?
根据功能区分:
1)Core Container
引入spring-core, spring-beans, spring-context, spring-context-support, spring-expression
2)AOP and Instrumentation
引入spring-aop, aspectjweaver(使用@Aspect注解)
PS:不需要aspectjrt包,因为weaver包已经包含了rt包的内容
3)Messaging
不用显示引入,有依赖会自动拉下来
4)Data Access/Integration
引入spring-jdbc, spring-tx, spring-orm, spring-oxm, spring-jms
5)Web
引入spring-web, spring-webmvc, spring-websocket, spring-webmvc-portlet
6)Test
引入spring-test
2、引入其他工具包
1)Apache Commons
搜索相关工具包:https://mvnrepository.com/search?q=Apache+Commons
按需要引入commons-io, commons-lang3, commons-codec, commons-pool2等
2)Java Servlet API
引入javax.servlet-api
3)日志相关slf4j + logback
引入slf4j-api, jcl-over-slf4j, logback-core, logback-classic, logback-ext-spring
3、项目父pom文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.my.maven</groupId>
<artifactId>webapp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>webapp Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<springframework.version>4.3.22.RELEASE</springframework.version>
<aspectj.version>1.8.13</aspectj.version>
<commons-io.version>2.6</commons-io.version>
<commons-codec.version>1.12</commons-codec.version>
<commons-lang3.version>3.8.1</commons-lang3.version>
<commons-pool2.version>2.6.1</commons-pool2.version>
<servlet.version>3.1.0</servlet.version>
<slf4j.version>1.7.26</slf4j.version>
<logback.version>1.2.3</logback.version>
<logback-ext-spring.version>0.1.5</logback-ext-spring.version>
<jcl.version>1.7.26</jcl.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- springmvc框架 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc-portlet</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${springframework.version}</version>
<scope>test</scope>
</dependency>
<!-- 其他工具包 -->
<!-- apache commons -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>${commons-pool2.version}</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<!-- slf4j + logback -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${jcl.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>${logback-ext-spring.version}</version>
</dependency>
</dependencies>
<build>
<finalName>webapp</finalName>
</build>
</project>
4、jar包说明
名称 | 功能 |
spring-core | 和spring-beans提供基本的IoC和依赖注入功能 |
spring-beans | 和spring-core提供基本的IoC和依赖注入功能 |
spring-context |
提供spring运行时环境,ApplicationContext接口是context模块的焦点 |
spring-context-support | 将公共第三方库集成到Spring应用程序上下文中提供支持,用于缓存(ehcache、guava、jcache)、邮件(javamail)、调度(commonj、quartz)和模板引擎(freemaker、jasperReports、velocity) |
spring-expression | 提供了一个功能强大的表达式语言SpEL |
spring-aop | spring-aop模块提供了一个AOP联盟兼容的面向切面的编程实现,允许您定义方法拦截器和切入点,以清晰地分离实现应该分离的功能的代码 |
aspectjweaver | 使用AspectJ切面需要的jar包 |
spring-jdbc | spring-jdbc模块提供了一个JDBC抽象层,消除了对数据库供应商特定错误代码进行冗长的JDBC编码和解析的需要 |
spring-tx | spring-tx模块支持为实现特殊接口的类和所有POJOs(普通的Java对象)的编程和声明式事务管理 |
spring-orm | spring-orm模块为流行的对象关系映射API(包括JPA、JDO和Hibernate)提供集成层。使用spring-orm模块,您可以将所有这些O/R映射框架与Spring提供的所有其他特性(如前面提到的简单声明性事务管理特性)结合使用 |
spring-oxm | spring-oxm模块提供了一个抽象层,支持对象/XML映射实现,如JAXB、Castor、XMLBeans、JiBX和Xstream |
spring-jms | spring-jms模块(Java消息服务)包含用于生产和消费消息的特征。从SpringFramework4.1开始,它提供了与spring-messaging模块的集成 |
spring-web | spring-web提供了基本的面向Web的集成功能,例如多文件上传功能、使用servlet监听器和面向Web的应用程序上下文初始化IOC容器。它还包含一个HTTP客户端和Spring远程支持与Web相关的部分 |
spring-webmvc | spring-webmvc(也称为Web-Servlet)包含Spring的模型视图控制器(MVC)和用于Web应用程序的REST Web Services实现。Spring的MVC框架在域模型代码和Web表单之间提供了一个清晰的分离,并与Spring框架的所有其他功能集成 |
spring-websocket | 支持websocket功能 |
spring-webmvc-portlet | spring-webmvc-portlet(也称为Web-Portlet)提供了要在portlet环境中使用的MVC实现,并镜像了基于servlet的spring-webmvc功能 |
spring-test | spring-test支持使用JUnit或TestNG对spring组件进行单元测试和集成测试。它提供了Spring ApplicationContexts的一致加载和缓存。它还提供mock objects,您可以使用这些对象单独测试代码 |
commons-io | commons-io是一款处理io流的工具,封装了很多处理io流和文件的方法 |
commons-lang3 | commons-lang3提供了最常用的工具包,例如ArrayUtils、ClassUtils、EnumUtils、SystemUtils、StringUtils |
commons-codec | commons-codec是Apache开源组织提供的用于摘要运算、编码解码的包。常见的编码解码工具Base64、MD5、Hex、SHA1、DES等 |
commons-pool2 | commons-pool2包提供了一个通用的对象池技术的实现。可以很方便的基于它来实现自己的对象池 |
javax.servlet-api | 提供Servlet常用接口 |
slf4j-api | slf4j日志框架,门面模式 |
jcl-over-slf4j | 是用来把Spring源代码中大量使用到的commons-logging替换成slf4j,只有在添加了这个依赖之后才能看到Spring框架本身打印的日志,否则只能看到开发者自己打印的日志(adapter commons-logging) |
logback-core | logback核心包 |
logback-classic | logback对slf4j的实现 |
logback-ext-spring |
spring集成logback包 |
参考资料:
1)Spring入门(这一节是包的导入,主要是自己对各个包的理解)
http://www.cnblogs.com/zilincom/articles/6007969.html
2)Spring官方文档
https://docs.spring.io/spring/docs/4.3.22.RELEASE/spring-framework-reference/htmlsingle/#overview-modules
3)spring核心框架体系结构(各个jar包作用)
https://blog.****.net/sunchen2012/article/details/53939253
4)Spring+Logback的集成总结
https://www.cnblogs.com/OnlyCT/p/7762134.html
5)Chapter 8: Mapped Diagnostic Context
https://logback.qos.ch/manual/mdc.html