目录
1、什么是spring
简单介绍
- 是什么?
- spring框架是一个开源的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器。它的创始人是Rod Johnson,他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。(所以一切的跨专业学习都不是弱势,而是优势,正是这样才体现出了自学能力)
- 解决了什么问题?
- Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。
- 解决了对象初始化的问题。不需要每调用一个类都需要自己去初始化,spring会去自动初始化,需要的时候去拿即可。(ioc工厂模式)
- 避免了关键字new造成耦合的问题
- 使用
- Spring可以单独应用于构筑应用程序,
- 也可以和Struts、Webwork等众多Web框架组合使用,
- 并且可以与 Swing等桌面应用程序组合
- 。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中
特征:
- 核心技术 :依赖注入(DI),AOP,事件(events),资源,i18n,验证,数据绑定,类型转换,SpEL。
- 测试 :模拟对象,TestContext框架,Spring MVC 测试,WebTestClient。
- 数据访问 :事务,DAO支持,JDBC,ORM,编组XML。
- Web支持 : Spring MVC和Spring WebFlux Web框架。
- 集成 :远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存。
- 语言 :Kotlin,Groovy,动态语言。
2、spring核心模块
Spring4.x 版本:
- Test : 提供了对 JUnit 和 TestNG 测试的支持。
- Beans :表示的是spring对所有Bean对象的管理,主要是包含了对象间的关系配置以及一些对象的实例化操作。
- Core: 包含了最底层的开发支持,例如:依赖的注入关系、资源文件的访问,数据类型的转换,可以说 Spring 其他所有的功能都需要依赖于该类库。主要提供 IoC 依赖注入功能。
- Context:提供的是一个完整的容器上下文,在这个上下文可以处理对象生命周期或者是事务
- SPEL:利用SPEL实现表达式语言的操作
- AOP :提供了面向切面的编程实现。例如:数据库关闭、事务处理
- Aspects :切面编程的语法支持
- Instrumetation: 是在JDK1.5之后增加的一个组件,主要用于检测JVM在运行中代码的动态处理过程
- Messaging:信息体系结构和协议支持;
- JDBC : Java数据库连接。
- ORM : 用于支持Hibernate等ORM工具。
- OXM:提供了一个对象与XML 文件之间的互相转换;
- JMS :Java消息服务。
- Transactions : 表示在数据访问模块支持了事务的操作处理;
- Web : 为创建Web应用程序提供支持。
3、注解
1、@RestController vs @Controller
@Controller:
- 单独使用 @Controller 不加 @ResponseBody的话一般使用在 要返回一个视图的情况,这种情况属于比较传统的Spring MVC 的应用,对应于前后端不分离的情况。
@RestController :
- @RestController = @C