私はマルチモジュールのMavenプロジェクトを持っていて、私のモジュールの1つにSpring AOPを設定しました。残念ながら、AOPはプロジェクトのためにのみ動作します。マルチモジュールMavenプロジェクトのAOPの側面
親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>
最初のモジュール(私のAOPの設定がある):ここに私のMavenの設定である
<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>
第二のモジュール(AOPが動作しない場合) :
<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>
最後に、最初のモジュールのSpring AOP構成:
@Pointcut("within(com.rss.rabbitmq.cron..*) || within(com.rss.rabbitmq.sender..*) || within(com.rss.parser..*)")
public void loggingPointcut() {
}
そして、私はこの点でポイントカットを使用しています:
@Around("loggingPointcut()")
public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
// <<implementation>>
}
をいくつかの掘削後、私はクラスパス内でmyproject/jarファイルを持っている場合、それが正常に動作する必要があることを理解しますが、私の場合、それはありませんうまくいかない。最初のモジュールのAOPは、"within(com.rss.rabbitmq.cron..*) || within(com.rss.rabbitmq.sender..*)"
の場合は正しく動作しますが、2番目のプロジェクトの場合は正しく動作しません。
また、最初の部分が同じで、問題の原因になる可能性があると思っていたので、パッケージ名を変更しようとしましたが、そうではありません。
動作しませんでした。おそらく私はいくつかの春のAopの概念が欠けているでしょう。私はmodule1とmodule2のためにすごくプロジェクトを作った。 module2については、mvnをインストールしてから、module1用にmvnパッケージを実行しましたが、aopはmodul2で動作しません。 – Pulkownik