![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| omickron |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 12.2.2009 Репутация: нет Всего: 1 |
Имеется веб-сервер на Spring 3.1, использующий аспекты через библиотеку cglib.
В config.xml такие строчки:
Т.е. для каждого бина будет создаваться прокси через cglib. Также мне нужно подключить бин для пула соединений с БД, для которого использую com.mchange.v2.c3p0.ComboPooledDataSource.
Проблема в том, что этот класс отмечен как final, а cglib не умеет проксировать final классы. Нужно как-то указать в конфиге, что бин "connectionPool" проксировать не надо. Как это сделать? |
||||
|
|||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Привет.
Убери proxy-target-class="true" Введи интерфейсы для тех бинов, которые необходимо запроксировать. Какой вообще смысл проксировать все бины?.. Ты еще не один раз с толкношся с тем, что CGLIB не может запроксировать тот или оной объект. Например, entityManager, если ты его получешь из контейнера AS, через JNDI -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| omickron |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 12.2.2009 Репутация: нет Всего: 1 |
Проксирую почти все бины - классы собственного написания. Использую для журнализации методов.
Нельзя разве spring'у указать, какие бины проксировать, а какие - нет? Интерфейсы - единственное решение? upd. Кстати, если убрать proxy-target-class="true", то @Autowired тоже перестанет работать, т.к. в нём тоже используется cglib. Интерфейсы придётся писать для всех бинов. Это сообщение отредактировал(а) omickron - 20.12.2012, 16:04 |
|||
|
||||
| MisterCleric |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Именно.
Ты знаешь: не задумывался. Задай вопрос здесь: http://forum.springsource.org/forumdisplay.php?31-AOP Или пощи уже готовый ответ там -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||
|
|||||
| omickron |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 12.2.2009 Репутация: нет Всего: 1 |
Понятно... спасиб.
Возможно, и придётся настрочить интерфейсы для всех бинов. Но хочется докопаться до истины. |
|||
|
||||
| Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Прошу прощения, а разве бин не проксится в качестве аспекта при помощи аннотации @Aspect? Если убрать @Aspect, а оставить, к примеру, @Service, то и бин не будет аспектом и @Autowired будет работать.
-------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
| omickron |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 12.2.2009 Репутация: нет Всего: 1 |
Штука как раз не в @Aspect, а в
Как я понял, когда proxy-target-class="true" Spring пытается создать прокси для всех бинов, которые встречает. Если убрать вообще эту строчку
то ошибки нет. Но и бин, помеченный @Aspect, не работает как аспект. :( |
||||||
|
|||||||
| Pawl |
|
||||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Работает. Я приведу пример простейшего АОП, разработанный мной для меня в учебных целях. Прилага выводит на экран страничку с кнопкой и числом, которое увеличивается на 1 после нажатия кнопки. Каждое обращение к странице логируется аспектом. Путь к логу задается в property-файле. Для увеличения числа используется сервисный классик - не аспект. Итак: web.xml:
dispatcher-servlet.xml:
log.properties:
index.jsp:
аспект:
контроллер:
счетчик:
page.jsp:
И самое главное - на рисунке набор библиотек, с которым это все работает. Я долго мучился с этими библиотеками! Это сообщение отредактировал(а) Pawl - 20.12.2012, 23:35 Присоединённый файл ( Кол-во скачиваний: 5 )
libs.jpg 52,86 Kb-------------------- В действительности всё совсем не так, как на самом деле |
||||||||||||||||
|
|||||||||||||||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |