AOP-五种通知类型
前置通知(before)
后置通知(after):无论原始方式方法是否有异常,都将执行
返回后通知(after-returning):原始方法出现异常,则无法执行
抛出异常后通知(after-throwing)
环绕通知(around)
通知返回值获取教程
- 通知类型中after,around可以获得返回值
- after-returning因为有可能抛出异常,继续执行,获取不到返回值
方式一:
原始方法:
public int update() {
System.out.println("user service update running....");
return 100;
}
通知方法:
public void afterReturing(Object ret){
System.out.println("afterReturing..."+ret);
}
AOP配置:
<bean id="myAdvice" class="com.it.aop.AOPAdvice"/>
<!--通知获取原始方法返回值信息-->
<aop:config>
<aop:pointcut id="pt" expression="execution(* *..*(..))"/>
<aop:aspect ref="myAdvice">
<aop:after-returning method="afterReturing" pointcut-ref="pt" returning="ret"/>
<aop:around method="around" pointcut-ref="pt"/>
</aop:aspect>
</aop:config>
方式二:通过ProceedingJoinPoint的方法
推荐使用
public void afterReturing(ProceedingJoinPoint pjp){
Object ret = pjp.proceed();
System.out.println("afterReturing..."+ret);
}