2015-11-27 4 views
0

Я создаю новый проект, который использует транзакции aspectj. Он также использует устаревшие банки, которые содержат службы, которые используют прокси-метод, где требуется интерфейс.Spring 4 Java Config Transactions Proxy и Aspecj

Я использую Java конфигурацию и когда я установил

@EnableTransactionManagement(mode=AdviceMode.ASPECTJ) 

Тогда я получаю следующее исключение брошенное с доступом к услугам прокси-стилю от унаследованной LIBS:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session 

Если я изменяю:

@EnableTransactionManagement (режим = AdviceMode.PROXY)

Тогда у меня проблемы, но я не могу использовать транзакции стиля aspectj в моем новом проекте.

Я попытался добавить две аннотации @EnableTransactionManagement с каждым советом, но это запрещено.

Вот аннотированный класс

@EnableWebMvc 
@Configuration 
@ComponentScan("com.mydomain") 
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ) 
public class ApplicationConfig extends WebMvcConfigurerAdapter { 
... 

Я также добавил Maven плагин AspectJ к существующему проекту в надежде, что он будет обрабатывать ткачество во время компиляции и, таким образом, 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> 

Возможно ли иметь весеннюю сделку с обоими режимами? Как мне это сделать?

Или есть другой способ решения этой проблемы.

ответ

0

Проблема связана с конфигурацией aspectj на устаревшем проекте.

Когда я запустил mvn-компиляцию, стало очевидно. Я должен был добавить зависимость:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-aspects</artifactId> 
    <version>${spring.version}</version> 
</dependency> 

, который получил это работает при компиляции с использованием Maven, но я это все еще не работает в затмении. Я должен был правой кнопкой мыши на наследство проекта в затмении:

Configure>Convert to Aspectj Project 

Тогда я мог бы развернуть из затмения, и я имел AspectJ поддержку транзакций в старых банках.