Я получаю эту ошибку в своем весеннем веб-приложении (весна 3.1), и я не знаю, почему.
org.springframework.web.util.NestedServletException: обработчик обработка не удалась; вложенным исключением является java.lang.NoClassDefFoundError: mypackage/TestCache$AjcClosure1
($AjcClosure1
выглядит странно)
Если я прокомментирую аннотацию @Cacheable
в классе ниже, ошибка исчезнет.
public class TestCache {
@Cacheable(value ="myCache")
public List<String> getDummyList(){
Logger l = Logger.getLogger(this.getClass());
l.error("calling getDummyList");
ArrayList<String> foo = new ArrayList<String>();
foo.add("foo");
foo.add("bar");
return foo;
}
}
Мой класс контроллера (упрощенный):
@Controller
@RequestMapping("/mypage")
public class MyController {
@RequestMapping
public String index(ModelMap model, Locale locale) {
TestCache tc = new TestCache();
...
}
}
Контекст приложения (только часть кеша):
<cache:annotation-driven mode="aspectj"/>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cache-manager-ref="ehcache"/>
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:config-location="classpath:ehcache.xml"/>
Я попробовал режим прокси и аспекта (в режиме прокси меньше ошибок, но кеш ничего не делал)
Это веб-приложение было изначально построен с помощью roo и использует spring mvc и webflow. Итак, в applicationContext.xml или webmvc-config.xml довольно много xml (и я не могу понять, что делают некоторые bean-компоненты). Я запускаю wepapps в eclipse с помощью m2e-wtp, а pom.xml использует подключаемый модуль aspectj-maven-plugin (но не знаю, что он делает)
. Похоже, проблема связана с аспектом j, но я никогда не использовал аспект J. Если кто-нибудь, гуру spring/java/aspectj, может объяснить мне, что вызывает эту ошибку и как я могу заставить работать свой кеш, это было бы здорово! (Я смог найти только учебник, но не образец проекта с использованием кэшируемой аннотации).