使命
帮助程序员从部分重复性工作中解脱出来-重复的对象创建,重复的工厂实现,其他公用功能等
描述
spring 是一个轻量级、非入侵形式框架
spring 是一个管理bean的容器,通过配置管理bean的生成和他们之间的关系
spring 提供了事物管理,持久化框架集成等功能
特性
- IOC
- AOP
IOC
控制反转 实现基础-反射
spring封装了bean的创建,通过内部实现的bean工厂和xml配置,创建各个bean和bean之间的依赖关系(DI 关系注入/依赖注入)
AOP
面向切面编程 实现基础-代理/反射
解决对一类行为之前或之后,统一添加一些附加逻辑
静态代理
编译时创建
单独实现一个类,通过实现相关业务接口,去代理相关业务的相关操作,并在相关操作前后添加需要代理的功能逻辑
动态代理
运行时创建
为了减少重复性代码,避免一个方法一个代理,实现动态的根据bean、方法名和参数,动态的添加代理
spring的实现方式
- java的动态代理方式。
- CGlib方式。
- Aspectj方式。
AOP中的基本概念
- 切面(Aspect)
和业务逻辑无关的,需要在整个系统,横向考虑的功能模块,如相同问题的日志处理。 - 连接点(JoinPoint)
连接点指程序运行过程中的某个阶段点,连接点的位置包括before、after、around以及throw四种。 - 通知(Advice)
通知即在某个连接点的处理逻辑,即切面功能的实际实现。 - 切入点(PointCut)
切入点即一系列连接点的集合,它指明通知将在何时被触发。可以指定能类名,也可以是匹配类名和方法名的正则表达式。当匹配的类或者方法被调用的时候,就会在这个匹配的地方应用通知。 - 目标对象(Target)
目标对象指实际业务逻辑实现对象,即需要代理的对象,在AOP中,目标对象可以专心实现自身的业务逻辑,通知功能在程序运行期间被自动引入。 - 代理(Proxy)
代理是目标对象被引入通知后创建的对象,这个对象既拥有目标对象的全部功能,而且拥有通知提供的附加功能。