我想配置我的 Spring 项目以使用 AspectJ 加载时编织。 我已完成以下操作:
- 添加了
<context:load-time-weaver aspectj-weaving="on"/>
在我的应用程序上下文中 - 在缓存中添加了aspectj
在我的 pom.xml 中添加了行
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-instrument</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${org.aspectj.version}</version> </dependency> ........... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <goals> <project>test</project> </goals> <configuration> <detail>true</detail> <forkMode>once</forkMode> <argLine>-javaagent:"${settings.localRepository}/org/springframework/spring-instrument/3.1.4.RELEASE/spring-instrument-3.1.4.RELEASE.jar"</argLine> </configuration> </plugin> </plugins> </build>
我有一个测试,但失败了。
@Cacheable(value = CacheConstants.FORM_TEMPLATE)
public int getRandomInt(){
return new Random().nextInt();
}
@Test
public void test(){
int i = getRandomInt();
assertEquals(i, getRandomInt());
}
有人可以解释为什么失败吗?很明显,加载时编织不起作用。
最佳答案
谢谢,M. Deinum!你的评论非常有用! 我重写了我的测试,如下
Dao对象
interface DaoObject {
int getCachedNumber();
}
DaoObjectImpl
@Repository
public class DaoObjectImpl implements DaoObject {
@Cacheable(value = CacheConstants.FORM_TEMPLATE)
public int getRandomInt(){
return new Random().nextInt();
}
@Override
public int getCachedNumber() {
return getRandomInt();
}
}
我的测试现在看起来像
@Test
public void cacheTest(){
assertEquals(daoObject.getCachedNumber(), daoObject.getCachedNumber());
}
一切都好。谢谢!
关于java - AspectJ 加载时编织不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23882961/