![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Pawl |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Доброго времени суток,
вникаю в реализацию АОП в 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. Огромное спасибо заранее! Это сообщение отредактировал(а) Pawl - 4.11.2012, 00:21 -------------------- В действительности всё совсем не так, как на самом деле |
||||||
|
|||||||
Kircul |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 20.2.2007 Репутация: 1 Всего: 7 |
||||
|
||||
Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Ок, подключил еще бибилиотеку aopalliance, после чего стала вылетать другая ошибка:
Погуглив, я нашел, что class net.sf.cglib.proxy.Enhancer находится в библиотеке cglib. Нашел, скачал, установил, проверил, что он там есть. Запустил - та же ошибка. Теперь-то чего ему не хватает? Класс ведь присутствует, а инициализировать его он почему-то не может! Это сообщение отредактировал(а) Pawl - 4.11.2012, 12:45 -------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
Kircul |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 20.2.2007 Репутация: 1 Всего: 7 |
Не видя строки запуска приложения мало что могу сказать.
Тем не менее советую попробовать воспользоваться системой сборки с dependency manager'ом: Apach Ant + Ivy, Maven или Gradle. Если всеже есть желание разобраться в том что же происходит, то советую прочитать это: http://skipy.ru/technics/likbez.html. |
|||
|
||||
Pawl |
|
||||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Согласен, из моих предыдущих постов можно было подумать, что моя проблема в сборке. Для уточнения проблемы приведу предельно упрощенный код приложения (всего, не пугайтесь, не много ![]() web.xml:
index.jsp:
page.jsp:
Конфиг Spring (dispatcher-servlet.xml):
Calc.java (мой аспект):
LoginController.java (мой контроллер):
В таком виде, при наличии Spring'овых библиотек, а также aopalliance и aspectjweaver, приложение нормально разворачивается и запускается. Но дело в том, что аспект у меня накладывается на несуществующий метод doSmth. Если же поменять doSmth на метод showForm контроллера, то получаю следующую ошибку:
Подозреваю, что дело тут кроется скорее в моем недопонимании Spring AOP, а не в незнании принципов сборки приложения ![]() -------------------- В действительности всё совсем не так, как на самом деле |
||||||||||||||||
|
|||||||||||||||||
Pawl |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Прошу прощения, что тема перестала соответствовать названию, но тут уже все коды - легче для понимания.
Удалось запустить приложение. Сделал следующее: добавил в 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 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Решения для приложения Spring, сконфигурированного при помощи аннотаций не нашел. Решение для приложения, сконфигурированного через xml, описано тут
-------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |