文章目录
1、Spring 各级架构(依赖间的关系)
1.1、spring 依赖结构
下面是spring4 的官方结构图
① core Container 核心容器
-
spring-Core
依赖注入IoC与DI的最基本实现
-
Spring-beans
Bean工厂与bean的装配
-
spring-context
扩展了BeanFactory,为它添加了Bean生命周期控制、框架事件体系以及资源加载透明化功能。此外该模块还提供了许多企业级支持,如邮件访问、远程访问、任务调度等,ApplicationContext是该模块的核心接口,它的超类是BeanFactory。
3.1、spring-context-support模块是对Spring IOC容器的扩展支持。
3.2、spring-context-indexer模块是Spring的类管理组件和Classpath扫描。
-
spring-expression
统一表达式语言(EL)的扩展模块,可以查询、管理运行中的对象,同时也可以方便的调用对象方法、操作数组、集合等。
② AOP和设备支持
-
spring-aop
AOP主要的实现模块,实现比如前置通知、返回通知、异常通知等。
-
spring-aspects
集成自AspectJ框架,主要为Spring AOP提供多种AOP实现方法。
-
spring-instrument
提供一些类级的工具支持和ClassLoader级的实现,用于服务器
3.1、 spring-instrument-tomcat:针对tomcat的instrument实现
③ 数据访问与集成
-
spring-jdbc
DBC抽象框架的主要实现模块,用于简化Spring JDBC操作。
-
spring-tx
JDBC事物控制实现模块。事物控制放在业务逻辑层,基于具体的业务逻辑为基础,如果事物操作失败,则整个事物回滚。
-
spring-orm
orm框架支持模块,主要集成Hibernate、JPA和JDO,用于资源管理、数据访问对象(DAO)的实现和事物策略。
-
spring-oxm
xml与java转化。
-
spring-jms
发送和接收消息。
④ Web组件
-
spring-web
最基础的web支持,最基础的web支持。
-
spring-webmvc
依赖于 spring-web ,封装view层。
-
spring-websocket
与Web前端的全双工通讯的协议。
-
spring-webflux
非阻塞函数式Reactive Web框架,可以用来建立异步的、非阻塞、事件驱动的服务,并且扩展性非常好。
⑤ 通信报文
-
spring-messaging
Spring4开始新加入的模块,主要职责是为Spring框架集成一些基础的报文传送应用。
各模块间依赖关系
1.2、spring boot 依赖
- spring-boot-starter : 核心启动器,包含了自动配置、日志和YAML。
- spring-boot-starter-web: 构建 Web 应用,包括 RESTful。Tomcat 是默认的内嵌容器。
- spring-boot-starter-data-jpa : 使用 Hibernate 实现 Spring Data JPA。
- spring-boot-starter-cache : 使用 Spring 框架的缓存支持。
- spring-boot-starter-security : 安全框架,用于用户认证和用户授权。
- spring-boot-starter-aop : 切面编程,实现比如前置通知、返回通知、异常通知等,实现比如前置通知、返回通知、异常通知等。
- spring-boot-starter-thymeleaf :解析html、xml等。
- spring-boot-starter-websocket :支持WebSocket开发。
- spring-boot-starter-log4j :支持Log4J日志框架。
- spring-boot-starter-logging :Spring Boot默认的日志框架Logback。
- spring-boot-starter-tomcat:在spring-boot-starter-web中已经引入了内置tomcat,这个一般在更改内置web容器时使用。
- spring-boot-starter-undertow :web引擎undertow,可以替换内置的Tomcat。
- spring-boot-starter-jetty : web引擎jetty,可以替换内置的Tomcat。
1.3、spring-web与Spring-webmvc
依赖关系
-
spring-webmvc 是 依赖于 spring-web 的。
-
在maven中,使用spring-webmvc会自动包含spring-web。
各自包含的内容
- spring-web:controlle层的核心封装。
- spring-webmvc:view层的核心封装,提供各前端技术及标签支持。
引入spring-webmvc一个依赖,会把下列关系图中的依赖全部引入
1.4、spring-context
引入spring-webmvc一个依赖,会把下列关系图中的依赖全部引入
2、maven常用依赖
-
junit : java单元测试框架
-
slf4j-api :SLF4J是日志实现接口,后台可以使用log4j、logback、logging等日志类库去实现。
-
log4j :log4j日志类库。包含.class.
-
log4j-core :log4j日志类库。包含.class与.java(源码)。
-
log4j-api : log4j日志类库接口,需要搭配log4j 或log4j-core使用。
需要注意的是
Spring Boot 只有1.3.x和1.3.x以下版本才支持log4j的日志配置,1.3.x以上版本只支持log4j2。 -
mybatis : mybatis依赖包,持久层框架,几乎免除了JDBC代码,通过 XML 或注解来配置。
-
mybatis-spring : spring中整合mybatis。
-
mybatis-plus :(简称 MP)是一个 MyBatis 的增强工具。
-
mysql-connector-java : mysql的依赖。
-
c3p0 : 数据库连接池,优化数据库连接。
连接池是将已经创建好的连接保存在池中,当有请求来时,直接获取连接池中的有效连接对数据库进行访问,省略了创建连接和销毁连接的过程。这样性能上得到了提高。
- Servlet:HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
下面两个都是Servlet 规范包,只是版本不同
3.1 之前的 Servlet API 构件叫做 servlet-api-xxx.jar
3.1 及之后的Servlet API 构件改名为 javax.servlet-api-xxx.jar