# IDEA启动Springboot但AOP失效

# 现象

在IDEA启动Spring Boot后,调用了对应的方法,但并没有触发AOP。但是在测试的服务器上是可以的。

AOP使用的是AspectJ,通过maven打包时织入,使用了maven插件aspectj-maven-plugin。因此正常织入,并把打出的jar包放在服务上运行也是正常的。

而在IDEA上跑不行是因为点击Run后,IDEA会重新compile and run。但IDEA没有用aspectj对应的工具来编译,所以没有织入。

# 解决方案

# 方案一

通过maven来打包,但在IDEA运行前,不要再次build了。

这个方案显然没那么好,这样每次改完代码都要maven build,好麻烦。

# 方案二

IDEA安装AspectJ插件,选择它作为编译器。

附:

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>aspectj-maven-plugin</artifactId>
      <version>1.14.0</version>
    </plugin>
  </plugins>
</build>

References:

Spring Boot AOP (opens new window)

关于AspectJ你可能不知道的事 (opens new window)

关于Spring AOP的灵魂十问 (opens new window)

上次更新: 2023/8/18 23:39:36