1

Невозможно составить мой проект с помощью Aspectj. Существует проблема с Apache CXF: ResourceContext.getResource(SomeClass.class) создает простой объект, а не управляемый Spring. Поэтому я хотел бы использовать плетение и @Configurable, чтобы преодолеть эти трудности. Я получил его для работы в тестовом приложении Spring Boot (я мог бы предоставить ссылку на Github при необходимости) со следующей настройкой, используя @Configurable и @EnableSpringConfigured:Spring @ Конфигурируемая аннотация с AspectJ

Вот снимок моего pom.xml (Spring version является 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.

Любая помощь очень ценится, поскольку я действительно застрял в этой ошибке.

ответ

2

Добавление следующей зависимости пути к классам должно решить проблему:

<dependency> 
    <groupId>javax.transaction</groupId> 
    <artifactId>javax.transaction-api</artifactId> 
    <version>1.2</version> 
    <scope>provided</scope> 
</dependency> 
+0

Спасибо, Стас! Это действительно решило текущую проблему. Теперь я могу построить проект, но, к сожалению, я нашел, что некоторые из настраиваемых классов также используют Transactional. Это приводит к следующей ошибке во время выполнения: 'Caused by: java.lang.IllegalStateException: постпроцессор попытался заменить экземпляр bean типа * Исходное имя класса * с объектом (прокси) типа * Некоторое странное имя прокси-класса с прошивкой * - не поддерживается для классов с аспектной конфигурацией! ' –

+0

@ snoopy-whoopy Это другая проблема, поэтому откройте для нее новый вопрос. Если вы нашли и ответили, напишите свой ответ! – cb4

+0

@ cb4 Спасибо за совет! Я нашел ответ, но я новичок здесь, поэтому я должен ответить, например. как обычный ответ или как комментарий к описанию проблемы? –

Смежные вопросы