Я хочу настроить свой проект весны для работы с ткачеством времени AspectJ. Я сделал следующее:
<context:load-time-weaver aspectj-weaving="on"/>
в моем приложении contexдобавлены строки в моем 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());
}
Может кто-нибудь объяснить, почему это не удается? Очевидно, что время перемотки нагрузки не работает.
Спасибо, господин Дейн! Ваш комментарий очень полезен! Я переписал свой тест следующим образом
DaoObject
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());
}
Все в порядке. Благодарю!
@Cacheable
находится на bean-компоненте, не управляемом пружиной, и поэтому не применим к loadtimeweavig. Это будет работать только для бобов, управляемых весной.