AOP全自动编程(AspectJ)
切入点表达式execution(修饰符 返回值 包.类.方法名)
AspectJ的通知类型
- before前置通知
- afterRuning:后置通知
- around:环绕通知
- afterThrowing:抛出异常通知
- after:最终通知
代码
xml文件中
<bean id="userService" class="cn.sky.Service.UserServiceImpl"/>
<bean id="myAspect" class="cn.sky.aspect.MyAspect03"/>
<aop:config>
<aop:aspect ref="myAspect">
<aop:pointcut id="myPointCut" expression="execution(* cn.sky.Service.UserServiceImpl.*(..))"/>
<aop:around method="myAround" pointcut-ref="myPointCut"/>
</aop:aspect>
</aop:config>
切面类中
public class MyAspect03{
//插入前通知
public void myBefore(JoinPoint joinPoint){
System.out.println("前通知");
}
public Object myAround(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("环绕前");
Object obj=joinPoint.proceed();
System.out.println("环绕后");
return obj;
}
public void myAfterRunning(JoinPoint joinPoint,Object ret){
System.out.println("任务完成后通知");
System.out.println("可以有返回值,返回值为"+ret);
}
public void myAfter(JoinPoint joinPoint){
System.out.println("最终通知!!!");
}
}