Я создаю новый проект, который использует транзакции аспектов. Он также использует устаревшие файлы JAR, содержащие службы, использующие метод прокси, где требуется интерфейс.
Я использую конфигурацию Java, и когда я устанавливаю
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ)
Затем я получаю следующее исключение при доступе к службам стиля прокси из устаревших библиотек:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Если я перейду на:
@EnableTransactionManagement(режим=AdviceMode.PROXY)
Тогда я не понимаю проблемы, но я не могу использовать транзакции в стиле аспекта в моем новом проекте.
Я пытался добавить две аннотации @EnableTransactionManagement
для каждого режима совета, но это не разрешено.
Вот аннотированный класс
@EnableWebMvc
@Configuration
@ComponentScan("com.mydomain")
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ)
public class ApplicationConfig extends WebMvcConfigurerAdapter {
...
Я также добавил подключаемый модуль Anspectj maven к устаревшему проекту в надежде, что он будет обрабатывать переплетение во время компиляции и, таким образом, транзакции аспекта будут работать. Но это не решило проблему.
<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>
Возможно ли иметь весеннюю сделку с обоими режимами консультаций? Как бы я это сделал?
Или есть другой способ обойти эту проблему.