2

Springによって管理されていないオブジェクトに@cacheableアノテーションを使用したいと思います。クラスをコンパイルするためにmaven-aspectjコンパイラーを使用しています。しかし、私は何も織られていないのを見ません。

私は@Aspectを持っていません。これは、すべてのキャッシュ関連の注釈に対してSpringがこれを処理する必要があると想定しているためです。設定ファイルに次のものがあります。

グーグルした後、いくつか変更しました

<cache:annotation-driven mode="aspectj"/>

<context:annotation-config />

<context:component-scan base-package="com.merc.spring.cache.aspectj" /> 

META-INFフォルダにaop.xmlを追加しました。

<aspectj>
<weaver options="-verbose -showWeaveInfo">
  <include within="com.merc.spring.cache.aspectj..*"/>
</weaver>
</aspectj>
4

1 に答える 1

0

@Cacheableクラスが実際にCacheAspectで織り込まれているかどうかを検証するために、これをmavenaspectjプラグインに追加できます。

<configuration>
    <showWeaveInfo>true</showWeaveInfo>

編集

私はaspectjプラグイン構成全体を貼り付けています。これはプロジェクトで機能します。

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.4</version>
            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjrt</artifactId>
                    <version>${aspectj.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjtools</artifactId>
                    <version>${aspectj.version}</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <outxml>true</outxml>
                <showWeaveInfo>true</showWeaveInfo>
                <verbose>true</verbose>
                <aspectLibraries>
                    <aspectLibrary>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aspects</artifactId>
                    </aspectLibrary>
                </aspectLibraries>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>

私のjava.version、aspectj.versionは次のように設定されています:

<properties>
    <aspectj.version>1.6.12</aspectj.version>
    <java.version>1.6</java.version>
</properties>
于 2012-07-07T17:27:15.413 に答える