![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| iluvatar |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: нет Всего: 4 |
Есть такая задача:
Есть класс-контейнер бинов. Всё это дело создаю через spring
Как выглядят классы:
и один из внутренних классов:
Контейнер является синглтоном, в каком-то классе я его объявляю:
Проблема в том, что autowiredTest создается не при обращении к нему, а при обращении к родительскому классу, т.е. цепь получается такая: init Main -> init autowiredTest -> init test1, test2, test3 и т.д. а хочется чтобы autowiredTest инициализировался перед вызовом к нему, test1, test2, test3 - только при обращении к ним и т.д. Возможно такое? |
||||||||
|
|||||||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 5 Всего: 38 |
Для решения такой задачи нужно реализовать паттерн прокси с ленивой инициализацией целевого объекта в каждом методе. Т.е. написать простой класс, который будет наследовать (или имплементить интерфейс) целевой класс (интерфейс целевого класса). Добавить ему приватную проперти типа целевого класса. Отделегировать все методы этому проперти, т.е. перегрузить методы так, что бы они вызывали те же методы целевого объекта. И в каждом методе делаешь проверку на то что, целевой объект != null. В ином случае создаешь (или достаешь из spring). Ну вот тебе и будет ленивая инициализация при обращении к объекту, а не во время его инициализации. Spring инициализирует бины и инжектит уже конкретные объекты в момент инициализации клиента. Так что твою задачу можно решить только своим собственным умом, а возможностями фреймворка.
Хотя, может я и не прав: мо4жет такой паттерн реализован в Spring - надо порыться... -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: нет Всего: 4 |
Спасибо за ответ, но нужно решение именно через spring - под него заточен весь проект и переделывать его достаточно нецелесообразно.
Проблема и возникла как раз от того, что проект разросся и выполняется множество ненужных действий. Вопрос по-прежнему открыт. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |