【问题标题】:spring cache and aspectj弹簧缓存和aspectj
【发布时间】:2012-07-07 17:20:25
【问题描述】:

我想在非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>

【问题讨论】:

    标签: spring caching aspectj


    【解决方案1】:

    只是为了验证您的 @Cacheable 类是否真的与 CacheAspect 交织在一起,您可以将其添加到 maven aspectj 插件中:

    <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>
    

    【讨论】:

    • 哦,好吧,你的类路径中有 spring-aspects 对吧?要么可能丢失,要么您配置 aspectj 插件的方式 - 否则它应该可以工作
    猜你喜欢
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2018-04-02
    相关资源
    最近更新 更多