1. 程式人生 > >spring AOP的總結

spring AOP的總結

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>