Spring 4 Java 配置事务代理和 Aspecj
Spring 4 Java Config Transactions Proxy and Aspecj
我正在创建一个使用 aspectj 事务的新项目。它还使用旧版 jar,其中包含使用需要接口的代理方法的服务。
我正在使用 java 配置,当我设置
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ)
然后我从遗留库访问代理样式服务时抛出以下异常:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
如果我改成:
@EnableTransactionManagement(模式=AdviceMode.PROXY)
然后我没有得到问题,但是我不能在我的新项目中使用 aspectj 样式事务。
我试过为每个 adviceMode 添加两个 @EnableTransactionManagement
注释,但这是不允许的。
这里是注释的class
@EnableWebMvc
@Configuration
@ComponentScan("com.mydomain")
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ)
public class ApplicationConfig extends WebMvcConfigurerAdapter {
...
我还在遗留项目中添加了 aspectj maven 插件,希望它能在编译时处理编织,从而 aspectj 事务能够工作。但这并没有解决问题。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version>
<configuration>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
<showWeaveInfo>true</showWeaveInfo>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
是否可以让 spring 处理两种建议模式?我该怎么做?
或者有其他方法可以解决这个问题。
问题出在遗留项目的 aspectj 配置上。
当我 运行 mvn compile 它变得很明显。我必须添加依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
当使用 maven 编译时它可以工作,但我仍然不能在 eclipse 中工作。我必须右键单击 eclipse 中的遗留项目:
Configure>Convert to Aspectj Project
然后我可以从 eclipse 进行部署,并且我在遗留 jars 中获得了 aspectj t运行sactional 支持。
我正在创建一个使用 aspectj 事务的新项目。它还使用旧版 jar,其中包含使用需要接口的代理方法的服务。
我正在使用 java 配置,当我设置
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ)
然后我从遗留库访问代理样式服务时抛出以下异常:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
如果我改成:
@EnableTransactionManagement(模式=AdviceMode.PROXY)
然后我没有得到问题,但是我不能在我的新项目中使用 aspectj 样式事务。
我试过为每个 adviceMode 添加两个 @EnableTransactionManagement
注释,但这是不允许的。
这里是注释的class
@EnableWebMvc
@Configuration
@ComponentScan("com.mydomain")
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ)
public class ApplicationConfig extends WebMvcConfigurerAdapter {
...
我还在遗留项目中添加了 aspectj maven 插件,希望它能在编译时处理编织,从而 aspectj 事务能够工作。但这并没有解决问题。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version>
<configuration>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
<showWeaveInfo>true</showWeaveInfo>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
是否可以让 spring 处理两种建议模式?我该怎么做?
或者有其他方法可以解决这个问题。
问题出在遗留项目的 aspectj 配置上。
当我 运行 mvn compile 它变得很明显。我必须添加依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
当使用 maven 编译时它可以工作,但我仍然不能在 eclipse 中工作。我必须右键单击 eclipse 中的遗留项目:
Configure>Convert to Aspectj Project
然后我可以从 eclipse 进行部署,并且我在遗留 jars 中获得了 aspectj t运行sactional 支持。