gpt4 book ai didi

spring - 如何禁用 Spring 的 JpaExceptionTranslatorAspect

转载 作者:行者123 更新时间:2023-12-04 18:40:25 25 4
gpt4 key购买 nike

我正在从 Spring 2.5.6 迁移到 3.2.5。 jar spring-aspects-3.2.5 包含新的方面 JpaExceptionTranslatorAspect,它将标准 JPA 异常转换为 Spring 异常。 It seems to be a Roo-specific aspect .这个方面会自动编织到存储库中(用@Repository 注释)。因此,标准的 JPA 异常不再被捕获,应用程序被破坏。

如何排除 JpaExceptionTranslatorAspect 被编织?如果无法完成,是否还有其他解决方法?还是我遗漏了一些配置?

我正在使用 AspectJ 1.7.4 和 AspectJ Maven 插件 1.4。

我已经收集到的:

但是,我想知道这些信息是否是最新的。

最佳答案

首先,将aspectj-maven-plugin升级到1.5,并在插件的配置中添加complianceLevel标签(否则会默认尝试编译java 1.4 compliance)。然后就可以通过aspectj-maven-plugin的xmlConfigured属性指定排除。此属性引用本地目录中的文件(即您的 pom.xml 所在的位置)

pom.xml 示例:

  <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<complianceLevel>${maven.compiler.target}</complianceLevel>
<xmlConfigured>myCtAspects.xml</xmlConfigured>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<showWeaveInfo>true</showWeaveInfo>
<weaveMainSourceFolder>true</weaveMainSourceFolder>
<proceedOnError>${maven.aspectj.failOnError}</proceedOnError>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
<phase>process-resources</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>

然后在 myCtAspects.xml 文件中,您只需明确指定所有需要的方面,包括 Spring 方面。在你的情况下:

<?xml version="1.0"?>
<aspectj>
<aspects>
<!-- Spring Aspects -->
<aspect name="org.springframework.beans.factory.aspectj.AbstractInterfaceDrivenDependencyInjectionAspect"/>
<aspect name="org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect"/>
<aspect name="org.springframework.transaction.aspectj.AnnotationTransactionAspect"/>
<!-- Your Application Aspects -->
</aspects>
</aspectj>

关于spring - 如何禁用 Spring 的 JpaExceptionTranslatorAspect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com