五点半先生
请问在kevin方法为什么不会执行呀?谢谢!
@Aspect
@Component
@Slf4j
public class KevinAspect {
private long startTime;
private long endTime;
/**
* 声明一个切点
*/
//@Pointcut("execution(* geektime.spring.springbucks.repository..*(..))")
@Pointcut("execution(* geektime.spring.springbucks.service..*(..))")
private void kevin(){
log.info("Pointcut startTime:{},endTime:{}" ,startTime, endTime);
}
/**
* 程序执行之前
*/
@Before("kevin()")
public void before(){
this.startTime = System.currentTimeMillis();
log.info("before startTime:{},endTime:{}" ,startTime, endTime);
}
/**
* 程序执行之后
*/
@After("kevin()")
public void after(){
this.endTime = System.currentTimeMillis();
log.info("after startTime:{},endTime:{},程序执行时间->{}ms" ,startTime, endTime,endTime-startTime);
}
@Around("kevin()")
public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable{
log.info("around startTime:{},endTime:{}" ,startTime, endTime);
return proceedingJoinPoint.proceed();
// return null;
}
}
2019-03-20 15:16:57.491 INFO 9888 --- [ main] g.spring.springbucks.aspect.KevinAspect : around startTime:0,endTime:0
2019-03-20 15:17:05.770 INFO 9888 --- [ main] g.spring.springbucks.aspect.KevinAspect : before startTime:1553066225770,endTime:0
2019-03-20 15:17:05.778 INFO 9888 --- [ main] g.s.springbucks.service.CoffeeService : 方法执行test- > 测试返回false
2019-03-20 15:17:05.778 INFO 9888 --- [ main] g.spring.springbucks.aspect.KevinAspect : after startTime:1553066225770,endTime:1553066225778,程序执行时间->8ms
作者回复: 那方法是用来声明Pointcut的,并不会执行里面的内容,所以一般我们都写个空方法