Spring、Spring MVC、MyBatis 和 Spring Boot的关系
首先辨析SSM 中,两个S代表什么,是Sping 和SpringMvc
Spring的功能,可以概括为五大核心模块 ,SpringMVC 是其中的第四大核心模块,也就是Spring Web(Web 开发)模块,也就是说SpringMVC是spring的一个模块。
Spring核心模块:
(1) Spring Core(核心容器)
实现Spring的两大核心功能:控制反转和依赖注入
模块 | 功能 |
---|---|
spring-core | 提供 IoC(控制反转)和 DI(依赖注入)基础 |
spring-beans | 管理 Bean 的生命周期(如 @Component、@Bean) |
除了这两种,还有其他模块功能 |
关键注解:
@Component(通用组件)
@Service(业务层)
@Repository(数据访问层)
@Autowired(依赖注入)
@Configuration + @Bean(Java 配置类)
(2) Spring AOP(面向切面编程)
模块 | 功能 |
---|---|
spring-aop | 提供 AOP 支持(如日志、事务管理) |
spring-aspects | 集成 AspectJ(更强大的 AOP 功能) |
关键注解:
@Aspect(定义切面)
@Before / @After / @Around(增强方法)
@Transactional(声明式事务)
(3) Spring Data Access(数据访问)
模块 | 功能 |
---|---|
spring-jdbc | 简化 JDBC 操作(如 JdbcTemplate) |
spring-tx | 事务管理(如 @Transactional) |
关键注解:
@Transactional(事务管理)
@Repository(数据访问层)
(4) Spring Web(Web 开发)
此处就是我们平时说的SpringMVC'
模块 | 功能 |
---|---|
spring-web | 基础 Web 功能(如 HttpMessageConverter) |
spring-webmvc | Spring MVC 框架(@Controller、@GetMapping) |
spring-websocket | WebSocket 支持 |
关键注解:
@Controller / @RestController
@RequestMapping / @GetMapping / @PostMapping
@RequestBody / @ResponseBody
(5) Spring Test(测试支持)
模块 | 功能 |
---|---|
spring-test | 集成测试(如 @SpringBootTest) |
关键注解:
@SpringBootTest(启动完整 Spring 上下文)
@MockBean(模拟依赖)
总结:
什么属于SpringMVC?
什么属于SpringMVC之外的部分?
以一个完整项目为例,
一个完整的Springboot整合的ssm项目中,可以把view层(也就是前端页面那些),controller层的各种@xxxMapping、@Controller ,以及model(也就是数据模型)层,认为是SpringMVC
而在service层,dao层写的各种@Component以及他的变种(比如@Service(业务层)
@Repository(数据访问层)),还有使用的依赖注入的 @Autowired这些使用的地方就可以说是属于Sping,因为这些是实现的spring的核心功能。
接下来,辨析,SpringBoot和SSM的关系
实际开发历程中,SSM三项是一个完整项目的结构,在Springboot出现之前,一个SSM项目resources需要以下配置,很多xml文件,非常繁琐
springboot出现后,讲配置文件整合,只需少量properties/yml配置文件,如下图
其他区别
springboot其实对于业务逻辑方面,没有对于ssm的过多优化,更多的是在项目配置上进行集成,方便开发者开发。