-
Proxying interfaces
查看全部 -
ProxyFactoryBean
6.如果ProxyFactoryBean的proxyInterfaces屬性被設(shè)置,
但是目標類實現(xiàn)了一個(或者更多)接口,那么ProxyFactoryBean將自動檢測到這個目標類已經(jīng)實現(xiàn)了至少一個接口,創(chuàng)建一個基于JDK的代理
查看全部 -
ProxyFactoryBean
使用ProxyFactoryBean或者其他IoC相關(guān)類來創(chuàng)建AOP代理的最重要好處是通知和切入點也可以由IoC來管理
被代理類沒有實現(xiàn)任何接口,使用CGLIB代理,否則JDK代理
通過設(shè)置proxyTargetClass為true,可強制使用CGLIB
如果目標類實現(xiàn)了一個(或者多個)接口,那么創(chuàng)建代理的類型將依賴ProxyFactoryBean的配置
如果ProxyFactoryBean的proxyInterfaces屬性被設(shè)置為一個或者多個全限定接口名,基于JDK的代理將被創(chuàng)建
查看全部 -
ProxyFactoryBean實現(xiàn)里getObject()方法創(chuàng)建的對象
getObject方法將創(chuàng)建一個AOP代理包裝一個目標對象
查看全部 -
ProxyFactoryBean
創(chuàng)建Spring AOP代理的基本方法是使用org.springframework.aop.framework.ProxyFactoryBean
這可以完全控制切入點和通知(advice)以及他們的順序
查看全部 -
Advisor API in Spring
Advisor是僅包含一個切入點表達式關(guān)聯(lián)的單個通知的方面
除了introductions,Advisor可以用于任何通知
org.springframework.aop.support.DefaultPointcutAdvisor是最常用的advisor類,他可以與MethodInterceptor,BeforeAdvice或者ThrowsAdvice一起使用
他可以混合在Spring同一個AOP代理的advisor和advice
查看全部 -
Introduction advice
一個Spring test suite的例子
如果調(diào)用lock方法,希望所有的setter方法拋出LockedException異常
需要一個完成繁重任務(wù)的IntroductionInterceptor,這種情況下,可以使用org.springframework.aop.support.DelegatingIntroductionInterceptor
查看全部 -
Introduction advice
Spring把引入通知作為一種特殊的攔截通知
需要IntroductionAdvisor和IntroductionInterceptor
僅適用于類,不能和任何切入點一起使用
查看全部 -
Interception around advice
環(huán)繞advice 攔截器
Spring的切入點模型使得切入點可以獨立與advice重用,以針對不同的advice可以使用相同的切入點
查看全部 -
After Returning advice
后置通知必須實現(xiàn)prg.springframework.aop.AfterReturningAdvice接口
可以訪問返回值(但不能進行修改)、被調(diào)用的方法、方法的參數(shù)和目標
如果拋出異常,將會拋出攔截器鏈,替代返回值
查看全部 -
Throws advice
如果連接點拋出異常,throws advice在連接點返回后被調(diào)用
如果throws-advice的方法拋出異常,name它將覆蓋原有異常(原有異常是指業(yè)務(wù)方法的異常)
接口org.apringframework.aop.ThrowsAdvice 不包含任何方法,僅僅是一個聲明,實現(xiàn)類需要實現(xiàn)類似下面的方法
void afterThrowing([Method, args,target], ThrowableSubclass);
查看全部 -
Before advice
一個簡單的通知類型
只是在進入方法之前被調(diào)用,不需要MethodInvocation對象
前置通知可以在連接點執(zhí)行之前插入自定義行為,但不能改變返回值
查看全部 -
spring AOP API
pointcut
實現(xiàn)之一:NameMatchMethodPointcut,根據(jù)方法名字進行匹配
成員變量:mappedNames,匹配的方法名集合
查看全部 -
使用到事物控制的時候經(jīng)常使用的方式 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配合使用
查看全部
舉報