Spring不仅是一个框架,还是一个生态。Spring类似一个全家桶。
Spring中一切都是围绕Bean来实现和完成的。
Spring能干什么?
管理这些POJO的Bean,我们不需要自己new对象。简化开发。
Spring简化开发四个基本策略:
- 基于POJO的轻量级和最小侵入性编程。
- 通过依赖注入和面向接口松耦合。
- 基于切面和惯性进行声明式编程。
- 通过切面和模板减少样板式代码。
Spring中的编程思想:
Spring思想 | 应用场景(特点) | 归纳 |
OOP | 面向对象编程(Object Oriented Programming),一切都是对象 | 封装、继承、多态 |
BOP | 面向实体编程(Bean Oriented Programming),面向Bean(普通Java类)设计程序 | 一切从Bean开始 |
AOP | 面向切面编程(Aspect Oriented Programming),找出多个类中有一定规律的代码,开发时拆开,运行时再合并,面向切面编程即面向规则编程。 | 解耦,专人做专事 |
IoC | 控制反转(Inversion of Control),对Bean的控制(Bean的创建、销毁、管理)反转交给Spring,并由Spring保存已创建的对象(IOC容器)。 | 转交控制权,控制权反转 |
DI/DL | 依赖注入(Dependency Injection)或者依赖查找(Dependency Lookup)。Spring不仅保存自己创建的对象,而且保存对象之间的关系。注入即赋值,主要有三种方式:构造方法、set方法、直接赋值。 | 自动赋值 |
基于BOP,有了IoC,DI和AOP都依赖于IoC。
Spring注解编程
V1.0
@Transactional事务注解
@ManageResource资源管理
V2.0
@Required数据校验
@Repository DAO层数据操作
@Aspect
V2.5
@Service标记为业务类
@Controller标记为controller类
@RequestMapping
@ModelAttribute类型转换
@Resource
V3.x
@Configuration
@Component
@ComponentScan 代替类的扫描路径配置:<context:component-scan>
V4.x
@Conditional标记类初始化条件
@ComponentScans
@EventListener
V5.x
Spring5作为Spring Boot 2.0底层支持,添加了一些支持SpingBoot的注解