-
Proxying interfaces
查看全部 -
ProxyFactoryBean
6.如果ProxyFactoryBean的proxyInterfaces属性被设置,
但是目标类实现了一个(或者更多)接口,那么ProxyFactoryBean将自动检测到这个目标类已经实现了至少一个接口,创建一个基于JDK的代理
查看全部 -
ProxyFactoryBean
使用ProxyFactoryBean或者其他IoC相关类来创建AOP代理的最重要好处是通知和切入点也可以由IoC来管理
被代理类没有实现任何接口,使用CGLIB代理,否则JDK代理
通过设置proxyTargetClass为true,可强制使用CGLIB
如果目标类实现了一个(或者多个)接口,那么创建代理的类型将依赖ProxyFactoryBean的配置
如果ProxyFactoryBean的proxyInterfaces属性被设置为一个或者多个全限定接口名,基于JDK的代理将被创建
查看全部 -
ProxyFactoryBean实现里getObject()方法创建的对象
getObject方法将创建一个AOP代理包装一个目标对象
查看全部 -
ProxyFactoryBean
创建Spring AOP代理的基本方法是使用org.springframework.aop.framework.ProxyFactoryBean
这可以完全控制切入点和通知(advice)以及他们的顺序
查看全部 -
Advisor API in Spring
Advisor是仅包含一个切入点表达式关联的单个通知的方面
除了introductions,Advisor可以用于任何通知
org.springframework.aop.support.DefaultPointcutAdvisor是最常用的advisor类,他可以与MethodInterceptor,BeforeAdvice或者ThrowsAdvice一起使用
他可以混合在Spring同一个AOP代理的advisor和advice
查看全部 -
Introduction advice
一个Spring test suite的例子
如果调用lock方法,希望所有的setter方法抛出LockedException异常
需要一个完成繁重任务的IntroductionInterceptor,这种情况下,可以使用org.springframework.aop.support.DelegatingIntroductionInterceptor
查看全部 -
Introduction advice
Spring把引入通知作为一种特殊的拦截通知
需要IntroductionAdvisor和IntroductionInterceptor
仅适用于类,不能和任何切入点一起使用
查看全部 -
Interception around advice
环绕advice 拦截器
Spring的切入点模型使得切入点可以独立与advice重用,以针对不同的advice可以使用相同的切入点
查看全部 -
After Returning advice
后置通知必须实现prg.springframework.aop.AfterReturningAdvice接口
可以访问返回值(但不能进行修改)、被调用的方法、方法的参数和目标
如果抛出异常,将会抛出拦截器链,替代返回值
查看全部 -
Throws advice
如果连接点抛出异常,throws advice在连接点返回后被调用
如果throws-advice的方法抛出异常,name它将覆盖原有异常(原有异常是指业务方法的异常)
接口org.apringframework.aop.ThrowsAdvice 不包含任何方法,仅仅是一个声明,实现类需要实现类似下面的方法
void afterThrowing([Method, args,target], ThrowableSubclass);
查看全部 -
Before advice
一个简单的通知类型
只是在进入方法之前被调用,不需要MethodInvocation对象
前置通知可以在连接点执行之前插入自定义行为,但不能改变返回值
查看全部 -
spring AOP API
pointcut
实现之一:NameMatchMethodPointcut,根据方法名字进行匹配
成员变量:mappedNames,匹配的方法名集合
查看全部 -
使用到事物控制的时候经常使用的方式 aop scheme下面 <aop:config> <aop:pointcut id="businessService" expression="execution(* com.xyz.myapp.service..(..))"/> <aop:advisor pointcut-ref="businessService" advice-ref="tx-advice"/> </aop:config> <tx:advice id="tx-advice"> <tx:attributes> <tx:method name="*" propagation="REQUIRED"> </tx:attributes> </tx:advice>
查看全部 -
和transaction配合使用
查看全部
举报