Spring 带有 AspectJ 的 @Configurable 注释
Spring @Configurable annotation with AspectJ
无法使用 Aspectj
编译我的项目。 Apache CXF
存在一个问题,即 ResourceContext.getResource(SomeClass.class)
创建了一个简单的对象,而不是 Spring 管理的对象。所以想用编织和@Configurable
来渡过这个难关。我让它在我的测试 Spring 引导应用程序中工作(如果需要,我可以在 Github 上提供 link),使用 @Configurable
本身和 @EnableSpringConfigured
:
这是我的 pom.xml 的快照(Spring 版本是 4.3。3.RELEASE):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
和aspectj-maven-plugin
插件配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<complianceLevel>1.8</complianceLevel>
<showWeaveInfo>true</showWeaveInfo>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
然而,当我尝试在我公司的实际项目中应用上面的配置时,我得到了这个奇怪的错误:
[ERROR] *path to the java file being weaving* can't determine annotations of missing type javax.transaction.Transactional
[ERROR] when weaving type *the full java class name*
[ERROR] when weaving classes
[ERROR] when weaving
[ERROR] when batch building BuildConfig[null] #Files=27 AopXmls=#0
[ERROR] [Xlint:cantFindType]
[ERROR] error at (no source information available)
我的测试项目没有使用 @Transactional
但真正的项目使用了。所以我尝试添加 spring-tx
和 persistence-api
依赖项但没有任何效果。最后一点:我第二次 运行 mvn install
构建项目成功,每次 运行 mvn clean install
.
都不成功
非常感谢任何帮助,因为我真的被这个错误困住了。
将以下依赖项添加到类路径应该可以解决问题:
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>javax.transaction-api</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
无法使用 Aspectj
编译我的项目。 Apache CXF
存在一个问题,即 ResourceContext.getResource(SomeClass.class)
创建了一个简单的对象,而不是 Spring 管理的对象。所以想用编织和@Configurable
来渡过这个难关。我让它在我的测试 Spring 引导应用程序中工作(如果需要,我可以在 Github 上提供 link),使用 @Configurable
本身和 @EnableSpringConfigured
:
这是我的 pom.xml 的快照(Spring 版本是 4.3。3.RELEASE):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
和aspectj-maven-plugin
插件配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<complianceLevel>1.8</complianceLevel>
<showWeaveInfo>true</showWeaveInfo>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
然而,当我尝试在我公司的实际项目中应用上面的配置时,我得到了这个奇怪的错误:
[ERROR] *path to the java file being weaving* can't determine annotations of missing type javax.transaction.Transactional
[ERROR] when weaving type *the full java class name*
[ERROR] when weaving classes
[ERROR] when weaving
[ERROR] when batch building BuildConfig[null] #Files=27 AopXmls=#0
[ERROR] [Xlint:cantFindType]
[ERROR] error at (no source information available)
我的测试项目没有使用 @Transactional
但真正的项目使用了。所以我尝试添加 spring-tx
和 persistence-api
依赖项但没有任何效果。最后一点:我第二次 运行 mvn install
构建项目成功,每次 运行 mvn clean install
.
非常感谢任何帮助,因为我真的被这个错误困住了。
将以下依赖项添加到类路径应该可以解决问题:
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>javax.transaction-api</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>