1. 什么是Spring(Spring Framework)
Spring是用于构建企业级应用的轻量级一站式框架(或者说解决方案)。核心是控制反转IoC和面向切片AOP
2. 为什么要用Spring
方便解耦,简化开发。Spring就是一个大工厂,可以将所有对象创建和依赖关系维护交给Spring管理。
AOP编程的支持。Spring提供面向切编程,可以方便的实现对序进行权限拦截、运监控等功能。
声明式事务的支持。只需要通过配置就可以完成对事务的管理,而无需手动编程。
方便程序的测试。Spring对Junit4支持,可以通过注解进行测试。
方便集成各种优秀框架。Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。
降低JavaEE API的使用难度。Spring 对 JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。
3. Spring家族

Spring不仅代表框架(Spring Framework),也代表了与之相关的子项目,比如Spring Boot、Spring Cloud、Spring Data
Spring倡导的现代Java设计:
- Spring Boot 构建一切
- Spring Cloud 协调一切
- Spring Cloud Data Flow 连接一切
这也体现了从单机到群集到云的变化趋势
4. Spring5的改变
| 改动点 | 改变的意义 | 一些反思 |
|---|---|---|
| Java8+、Kotlin | 语言在进步 | 要了解高版本JDK的新特性 |
| 支持WebFlux | Java异步编程模式的崛起 | 全面落地尚需时日 |
| 去掉了很多支持 | Portlet过时了、Velocity不维护了、JasperReport不流行了 | 库有很多,该怎么选? |
模板引擎Velocity不维护了,可以选择一些更新的模板引擎
后端报表JasperReport不流行了,现在报表一般都是在前端完成,例如百度的ECharts,后端只负责提供数据即可
5. Spring核心设计思想
5.1. IoC(Inversion of Control)控制反转
以前对象的创建由开发人员自己维护,依赖关系(类成员有其它类)也是自己注入。而spring可以直接完成对象的创建和依赖注入。所谓IoC就是反转了对象的创建方式和依赖注入方式,反转给spring去处理。
5.2. DI(Dependency Injection)依赖注入
DI是一种技术,体现了IoC思想。
5.3. AOP(Aspect Oriented Programming)面向切面编程
AOP:指在程序运行期间,将某段代码动态切入到指定方法的指定位置,这种方式,就叫面向切面编程
AOP是基于OOP基础之上的编程思想
AOP应用场景:
- 日志记录:与业务逻辑分离,以AOP的方式统一添加日志记录功能