代理模式|SpringIOC 和AOP 的理解


SpringIOC 和AOP 的理解

IOC(含义、举例、作用):控制反转,是一种设计思想,将原本需要自己手动创建的对象交由Spring框架来管理。(对象A需要对象B,原本是需要A自己创建对象B,现在反转了,对象的创建由Spring框架来完成,并在特定的时候提供给对象A。IOC,把自己创建对象反转成交给程序帮忙创建对象。)IOC是通过依赖注入(DI)实现的。
依赖注入(Dependency Injection)
它是Spring框架核心IOC的具体实现。
业务层和持久层的关系,在使用Spring后,就交由spring来维护。
DI原理
在运行期间由容器将依赖关系注入到组件之中,即在运行期间,由Spring根据配置文件,将其他对象的引用通过组件提供的setter方法进行设定。
数据类型
能注入的类型有三类:

  1. 基本类型和String
    代理模式|SpringIOC 和AOP 的理解
    文章图片
  2. 其他bean类型(在配置文件或注解中配置过的Bean)
  3. 复杂类型/集合类型
SpringAOP
面向切面编程——生成动态代理对象(Proxy),使用配置文件配置即可。
代理对象Proxy——即访问对象不会再直接去访问,而是通过代理对象间接访问。
例如:总经理A要让新来的员工C来做一件事,A可以直接去找C的小组长B,让B去吩咐C即可,C只需要专注地做自己的事情+听小组长B的吩咐即可,不需要在干别的事情。
动态代理目的——对原有对象进行代码增强。
Spring实现AOP的两种原理:
1.动态代理
动态代理的要求:被代理的对象,即目标对象(Target)必须实现接口,否则不能实现动态代理技术。
2.cglib
可以对任何类进行代理,但必须对Target进行继承,如果Target被final修饰,则不能被cglib代理。
这两种代理混合使用,如果目标对象Target实现接口,则优先使用动态代理,否则cglib
Spring中经常用到的几个名词
JoinPoint(连接点):指目标对象中可以增强的方法。
PointCut(切入点):指目标对象中以及增强的方法。
Advice(通知/增强):指增强的代码。
Target(目标对象):被代理的对象。
Weaving(织入):将通知应用到连接点形成切入点的过程。
Proxy(代理):将通知织入到目标对象,形成代理对象。
Aspect(切面):切入点+通知。
【代理模式|SpringIOC 和AOP 的理解】借鉴自:帅气博主

    推荐阅读