aop Spring Annotaion
- 将下面的标签加入Spring的xml中(注意添加对应的scama)
- aop的好处:可以动态的添加或删除切面上的逻辑,而不影响原代码的执行
a) filter
b) struts2的interceptor
/**
* Created by liudy on 17/4/16.
* Aspect-Oriented-Programming
* 面向切面编程,是对面向对象的思维方式的有力补充
* 如果被代理的对象没有实现接口,那么spring aop会使用CGLIB来产生动态代理的对象,那么需要添加相应的jar包
* 如果实现了接口,会使用jdk来产生动态代理对象
*/
@Aspect
@Component
public class LogInterceptor {
@Pointcut("execution(public * com.baobaotao.dao..*.*(..))")
public void myMethod(){
}
@Before("myMethod()")
public void before(){
System.out.println("method start");
}
@AfterThrowing("execution(public void com.baobaotao.dao.LoginLogDao.insertLoginLog(com.baobaotao.domain.LoginLog))")
public void afterThrowing(){
System.out.println("after throwing");
}
@AfterReturning("execution(public void com.baobaotao.dao.LoginLogDao.insertLoginLog(com.baobaotao.domain.LoginLog))")
public void afterReturning(){
System.out.println("method AfterReturning");
}
@After("execution(public void com.baobaotao.dao.LoginLogDao.insertLoginLog(com.baobaotao.domain.LoginLog))")
public void after(){
System.out.println("after");
}
@Around("myMethod()")
public void around(ProceedingJoinPoint pjp) throws Throwable {
System.out.println(" method around start");
pjp.proceed();
System.out.println(" method around end");
}
@Before("execution(public * com.baobaotao.dao..*.*(..))")
public void before1(){
System.out.println("save start");
}
}