aop思想——横向重复,纵向抽取.
在运行时,动态的将代码切入到类的指定方法、指定位置上的编程思想就是面向切面编程
Spring AOP就是基于动态代理的。如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用JDK Proxy去进行代理了,这时候Spring AOP 会使用Cglib,生成一个被代理对象的子类,来作为代理。
spring能够为容器中管理的对象生成动态代理对象
Spring实现AOP的原理
-
JDK代理 优先
被代理的对象必须实现接口,才能产生代理对象,如果没有接口将不能使用动态代理技术 -
cglib代理 没有接口
第三方代理技术,cglib代理,可以对任何类生成代理,代理的原理是对目标对象进行继承代理.如果目标对象被final修饰,那么该类无法被cglib代理.
spring的AOP名词解释
- JoinPoint(连接点)
目标对象中,所有可以增强的方法 - Poincut(切入点):
目标对象中已经增强的方法. - Advice(通知/增强)
增强的代码 - Target(目标对象)
被代理对象 - Weaving(织入)
将通知应用到切入点的过程 - Proxy(代理)
将通知织入到目标之后,形成代理对象 - Aspect(切面)
切入点+织入
Spring中的AOP
1.准备目标对象
2. 准备通知
3. 配置进行织入,将通知织入到目标对象中
配置将通知织入目标对象
<!--配置目标对象-->
<bean name="" class=""></bean>
<!--配置通知对象-->
<bean name="" class=""></bean>
<!--配置将通知织入目标对象-->
<aop:config>
<!--配置切入点-->
<aop:pointcut id="" expression=""
</aop:config>
网友评论