Невозможно составить мой проект с помощью 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
.
Любая помощь очень ценится, поскольку я действительно застрял в этой ошибке.
Спасибо, Стас! Это действительно решило текущую проблему. Теперь я могу построить проект, но, к сожалению, я нашел, что некоторые из настраиваемых классов также используют Transactional. Это приводит к следующей ошибке во время выполнения: 'Caused by: java.lang.IllegalStateException: постпроцессор попытался заменить экземпляр bean типа * Исходное имя класса * с объектом (прокси) типа * Некоторое странное имя прокси-класса с прошивкой * - не поддерживается для классов с аспектной конфигурацией! ' –
@ snoopy-whoopy Это другая проблема, поэтому откройте для нее новый вопрос. Если вы нашли и ответили, напишите свой ответ! – cb4
@ cb4 Спасибо за совет! Я нашел ответ, но я новичок здесь, поэтому я должен ответить, например. как обычный ответ или как комментарий к описанию проблемы? –