spring AOP的總結
阿新 • • 發佈:2018-12-17
AOP是spring對類進行功能增強的動態代理方法,包括兩種方式:
方式一:jdk ,基於介面 前置增強 @Before(“execution(* service..(…))”) 後置增強 @AfterReturning(pointcut=“execution(* service..(…))”, returning=“result”) 異常丟擲增強 @AfterThrowing(pointcut=“execution(* service..(…))”, throwing=“ex”) 環繞增強 @Around(“execution(* service..(…))”)
注意:需要在applicationContext.xml檔案中新增如下配置 aop:aspectj-autoproxy</aop:aspectj-autoproxy>
方式二:CGLIB,基於類 例如: public class Logger { public void before(JoinPoint jp){ } public void after(JoinPoint jp, Object result){ }
public void aterThrowing(JoinPoint jp, Exception ex){ }
public Object aroundExecute(ProceedingJoinPoint pjp) throws Throwable{ } }
在applicationContext.xml中配置aop-aspect相關的配置
<aop:config> <aop:pointcut expression="execution(* service.*.*(..))" id="optpointcut"/> <aop:aspect ref="mylogger"> <aop:before method="before" pointcut-ref="optpointcut" /> <aop:after-returning method="after" returning="result" pointcut-ref="optpointcut" /> <aop:after-throwing method="aterThrowing" throwing="ex" pointcut-ref="optpointcut" /> <aop:around method="aroundExecute" pointcut-ref="optpointcut"/> </aop:aspect> </aop:config>