今天某Spring Boot新手来问问题,问题如下:
Spring Boot切面为何不生效?
坦白说,刚开始碰到这个问题我是懵逼的。毕竟Spring MVC你告诉我不生效也就算了,毕竟还有配置文件要搞。但是Spring Boot你再搞不明白我就不能忍了。毕竟两个注解就能搞定的事情。
一开始考虑两个方向:
- 依赖不足。不过在Spring Boot基本不可能。毕竟只需要依赖
spring-boot-starter-aop
就完事了。 - 切面定义出错。定义错了自然无法生效。
可是看了下切面
@Pointcut("execution(public * com.xxx.controller.*.*(..))")
private void ControllerAspect(){}
没啥问题啊,这我就有点懵了。
仔细看了一会,发现点端倪。
等等,这个.aj后缀是个啥?
同学,现在确实可以直接创建切面文件没错,但是你得安装AspectJ并且同时配置对应的编译器啊。不然这文件java编译器压根不认识,等同于完全没有经过编译过程,何论生效呢?
后缀名修改回.java,正常运行。
有想了解如何在idea直接创建界面文件的,可参考AspectJ——简介以及在IntelliJ IDEA下的配置。