| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Spring AOP: не инициализируется GlobalAdvisorAdapt |
| Автор: Pawl 3.11.2012, 15:38 | ||||||
| Доброго времени суток, вникаю в реализацию АОП в Spring, и пока плохо получается. Из разрозненных примеров, собранных на просторах интернет, собрал web-приложение, которое не работает: при загрузке вываливается ошибка - Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.springframework.aop.framework.adapter.GlobalAdvisorAdapterRegistry приведу исходники контроллера, аспекта и xml-конфига:
Вот, прошу помощи, помогите разобраться, как правильно сконфигурировать файл настройки Spring, ну и вообще, где что не так. P. S. вроде, все нужные библиотеки подключены: Spring.aop, aspectjweaver, aspectjrt и aspectjtools. Огромное спасибо заранее! |
| Автор: Kircul 4.11.2012, 11:07 |
Нет |
| Автор: Pawl 4.11.2012, 12:39 | ||
Ок, подключил еще бибилиотеку aopalliance, после чего стала вылетать другая ошибка:
Погуглив, я нашел, что class net.sf.cglib.proxy.Enhancer находится в библиотеке cglib. Нашел, скачал, установил, проверил, что он там есть. Запустил - та же ошибка. Теперь-то чего ему не хватает? Класс ведь присутствует, а инициализировать его он почему-то не может! |
| Автор: Kircul 4.11.2012, 14:28 |
| Не видя строки запуска приложения мало что могу сказать. Тем не менее советую попробовать воспользоваться системой сборки с dependency manager'ом: http://ant.apache.org/ivy/, http://maven.apache.org/ или http://www.gradle.org/. Если всеже есть желание разобраться в том что же происходит, то советую прочитать это: http://skipy.ru/technics/likbez.html. |
| Автор: Pawl 4.11.2012, 20:35 | ||||||||||
| Прошу прощения, что тема перестала соответствовать названию, но тут уже все коды - легче для понимания. Удалось запустить приложение. Сделал следующее: добавил в web.xml параметры и слушателя контекста
переписал класс аспекта:
создал applicationContext.xml
а из dispatcher-servlet.xml убрал <aop:aspectj-autoproxy /> и <bean id="calc" class="study.spring.form.Calc" />. Теперь что я хотел бы получить: в аспекте перед вызовом метода showForm контроллера должен сработать метод setCount и сделать count = 2.Затем я хочу всунуть этот count на форму:
код формы:
Как я все это понимаю: на странице должно отобразиться 2, т. к. setCount в аспекте, по идее, уже отработал и в контроллер попадает calc с count = 2. Это 2 и попадет на форму... Но я точно что-то не так понимаю, потому что на форму выводится 1. Буду признателен, если наставите на путь истинный! |
| Автор: Pawl 7.11.2012, 15:37 |
| Решения для приложения Spring, сконфигурированного при помощи аннотаций не нашел. Решение для приложения, сконфигурированного через xml, описано http://cristianvrabie.blogspot.com/2009/05/spring-aop-cant-advise-controllers.html |