如何使用spring的注解驱动aspectj模式

2025-11-02 09:48:15

1、首先在spring的配置文件中添加

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj"/>

mode设置为aspectj模式

如何使用spring的注解驱动aspectj模式

2、jvm参数里添加

-javaagent:~aspectjweaver-1.8.1.jar

如何使用spring的注解驱动aspectj模式

3、如果是tomcat下,也可以添加到catalina.sh中,set JAVA_OPTS中

4、-javaagent参数添加完成时候,启动服务就可以正常使用aspectj模式了

上面说的方法是类加载器织入(Load Time Weaving, LTW),下面再介绍另外一种方法,编译时织入

5、在pom.xml文件中加入aspectj-maven-plugin插件配置

<plugin>

  <groupId>org.codehaus.mojo</groupId>

  <artifactId>aspectj-maven-plugin</artifactId>

  <version>1.9</version>

  <configuration>

      <showWeaveInfo>true</showWeaveInfo>

      <aspectLibraries>

          <aspectLibrary>

              <groupId>org.springframework</groupId>

              <artifactId>spring-aspects</artifactId>

          </aspectLibrary>

      </aspectLibraries>

      <source>${java.version}</source>

      <target>${java.version}</target>

      <complianceLevel>${java.version}</complianceLevel>

  </configuration>

  <executions>

      <execution>

          <goals>

              <goal>compile</goal>

              <goal>test-compile</goal>

          </goals>

      </execution>

  </executions>

</plugin>

如何使用spring的注解驱动aspectj模式

6、这几个配置要加上

<source>${java.version}</source><target>${java.version}</target>

<complianceLevel>${java.version}</complianceLevel>

否则可能会报以下错误

[ERROR] Syntax error, annotations are only available if source level is 1.5 or greater

E:\work\datai\code_study\study-master\study-spring-transaction\src\main\java\cn\sw\study\web\controller\UserController.java:12

@Controller

^^^^^^^^^^

[ERROR] Syntax error, annotations are only available if source level is 1.5 or greater

E:\work\datai\code_study\study-master\study-spring-transaction\src\main\java\cn\sw\study\web\controller\UserController.java:13

@RequestMapping("/user")

[ERROR] Missing message: configure.incompatibleComplianceForSource in: org.aspectj.ajdt.ajc.messages

<unknown source file>:<no line information>

[ERROR] no sources specified

<unknown source file>:<no line information>

7、添加完成之后,maven进行编译,如果出现java:0::0 can't determine annotations of missing type javax.persistence.Entity错误,

如何使用spring的注解驱动aspectj模式

8、则需要添加persistence-api依赖

<dependency>   <groupId>javax.persistence</groupId>   <artifactId>persistence-api</artifactId>   <version>1.0</version>   <scope>provided</scope></dependency>

如何使用spring的注解驱动aspectj模式

9、编译完成没有错误之后,这个时候不用加-javaagent,再次启动项目,一样可以完成事务织入

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢