У меня есть мультимодульный проект Maven и настроен Spring AOP в одном из моих модулей. К сожалению, АОП работает только для проекта, где он есть. Вот мой Maven конфигурации:AOP аспекты в мультимодульном проекте Maven
Родитель pom.xml
:
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>1.3.6.RELEASE</version>
</parent>
<modules>
<module>rabbitmq</module>
<module>rss_parser</module>
</modules>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Первый модуль (где мой АОП конфигурации есть):
<groupId>com.rss.rabbitmq</groupId>
<artifactId>rabbitmq</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>rabbitmq</name>
<parent>
<groupId>gpw.radar.rss</groupId>
<artifactId>parent-module</artifactId>
<version>1.0</version>
</parent>
<properties>
<java.version>1.8</java.version>
<rss.parser.version>1.0-SNAPSHOT</rss.parser.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.rss.parser</groupId>
<artifactId>rss-parser</artifactId>
<version>${rss.parser.version}</version>
</dependency>
</dependencies>
Второй модуль (где АОП не работает) :
<groupId>com.rss.parser</groupId>
<artifactId>rss-parser</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>rss_parser</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<rometools.version>1.7.0</rometools.version>
<jackson-datatype-jsr310.version>2.6.1</jackson-datatype-jsr310.version>
<jackson-databind.version>2.6.6</jackson-databind.version>
</properties>
<parent>
<groupId>gpw.radar.rss</groupId>
<artifactId>parent-module</artifactId>
<version>1.0</version>
</parent>
<dependencies>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome-fetcher</artifactId>
<version>${rometools.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson-datatype-jsr310.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
</dependency>
</dependencies>
И, наконец, моя конфигурация AOP Spring от первого модуля:
@Pointcut("within(com.rss.rabbitmq.cron..*) || within(com.rss.rabbitmq.sender..*) || within(com.rss.parser..*)")
public void loggingPointcut() {
}
И я использую Pointcut в этом аспекте:
@Around("loggingPointcut()")
public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
// <<implementation>>
}
После некоторого копания, я понимаю, что он должен работать нормально, если у меня есть MyProject/банка в пути к классам, но в моем случае это делает не работа. AOP для первого модуля, поэтому для "within(com.rss.rabbitmq.cron..*) || within(com.rss.rabbitmq.sender..*)"
работает правильно, но для второго проекта это не так.
Также я пытался изменить имя пакета, так как первые части совпадают, и я думал, что это может вызвать проблему, но это не так.
Это не сработало. Наверное, мне не хватает концепции весны. Я сделал сперва проекты для модулей1 и module2. Для модуля 2 я выполнил установку mvn, тогда я запускаю пакет mvn для модуля 1, но все же aop не работает для modul2. – Pulkownik