Spring Boot示例:
1.首先添加 AOP的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.创建切面对象(Aspect)
@Aspect
@Component
public class HttpAspect {
private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);
//此处指在GirlController中的所有方法在调用前都需要执行
@Before("execution(public * com.imooc.controller.GirlController.*(..))")
public void doBefore(JoinPoint joinPoint) {
logger.info("Before");
}
//GirlController中的add方法在调用都需要执行
@After("execution(public * com.imooc.controller.GirlController.add(..))")
public void doAfter() {
logger.info("After");
}
}
完成!是不是超简单!
简化上述代码:
@Aspect
@Component
public class HttpAspect {
private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);
@Pointcut("execution(public * com.imooc.controller.GirlController.*(..))")
public void log() { }
@Before("log()")
public void doBefore(JoinPoint joinPoint) {
logger.info("Before");
}
@After("log()")
public void doAfter() {
logger.info("After");
}
//新增一个@AfterReturning
@AfterReturning(returning = "object", pointcut = "log()")
public void doAfterReturning(Object object) {
logger.info("response={}", object.toString());
}
}