
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
10.01.2013, 10:20:43
|
|||
|---|---|---|---|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина. |
|||
|
#18+
Есть контекст в котором описаны бины, работающие с сущностями. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Класс ServiceDirector включает в себя все сервисы по работе с сущностями. ServiceDirector инжектится в другие бины и контроллеры. Например какой-то класс EntityInitor использует этот ServiceDirector. Проблема в том что сервисы, в данном примере cityService и countryService не успевают проинициализироваться до момента использования экземпляра ServiceDirector. А вот в контроллерах ServiceDirector все подтянул и там все ок. Вопрос, как сделать так чтобы до момента первого использования ServiceDirector все проперти в нем были уже проинициализированы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2013, 10:34:20
|
|||
|---|---|---|---|
|
|||
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина. |
|||
|
#18+
UsikПроблема в том что сервисы, в данном примере cityService и countryService не успевают проинициализироваться до момента использования экземпляра ServiceDirector. ... момента первого использования ServiceDirector все проперти в нем были уже проинициализированы? ничего не понял, что за первое использование и чем оно отличается от использование в контроллерах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2013, 11:28:58
|
|||
|---|---|---|---|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина. |
|||
|
#18+
Каким образом создается экземпляр EntityInitor? и как в него инжектится ServiceDirector? Надеюсь не оператором new ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2013, 11:34:39
|
|||
|---|---|---|---|
|
|||
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина. |
|||
|
#18+
UsikНапример какой-то класс EntityInitor использует этот ServiceDirector. Проблема в том что сервисы, в данном примере cityService и countryService не успевают проинициализироваться до момента использования экземпляра ServiceDirector. У вас многопоточный сервер? В одном потоке создаётся контекст, а в другом вы его уже используете ещё до того как контекст инициализировался? Странная немного ситуация, но всё же. Вот тут пример как ловить событие окончания инициализации контекста. http://stackoverflow.com/questions/8686507/how-to-add-a-hook-to-the-application-context-initialization-event Вообще если Spring котекст привязать к ServletContext, то инициализация будет происходить во время деплоймента, и сервер не будет напрвлять запросы в приложение до окончания деплоймента. UsikА вот в контроллерах ServiceDirector все подтянул и там все ок. Вопрос, как сделать так чтобы до момента первого использования ServiceDirector все проперти в нем были уже проинициализированы? Покажите как именно "класс EntityInitor использует этот ServiceDirector". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2013, 11:34:49
|
|||
|---|---|---|---|
|
|||
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина. |
|||
|
#18+
pavel_nvКаким образом создается экземпляр EntityInitor? и как в него инжектится ServiceDirector? Надеюсь не оператором new ?) +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2013, 12:49:12
|
|||
|---|---|---|---|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина. |
|||
|
#18+
EntityInitor это простой класс не бин. В конструкторе которого передается экземпляр ServiceDirector. Вот так сделано. Я думал что в методе public void afterPropertiesSet() ServiceDirector будет проинициализирован, так и есть он не null, я думал что и все его проперти будут не null, но они null. Если же я в ServiceDirector буду юзать анотации @Autowired, а не xml, то часть сервисов не null, а при использовании xml подхода они все null. Вот... Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2013, 13:33:00
|
|||
|---|---|---|---|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина. |
|||
|
#18+
А если этот код,который, я так понимаю и проверяет на null, в обычном методе компонента InitFactory вызвать? Код: java 1. 2. Ведь, на сколько я понимаю, Код: java 1. 2. вызывается в момент создания текущего бина, и не факт что вся иерархия зависимых бинов полностью инициализирована, ему достаточно что "первые" предки созданы (ведь их свойства можно установить и позже)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2013, 13:37:11
|
|||
|---|---|---|---|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина. |
|||
|
#18+
Да и в xml определении его вроде как надо прямо указывать Код: xml 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2013, 13:40:28
|
|||
|---|---|---|---|
|
|||
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина. |
|||
|
#18+
Можно ещё @PostConstruct попробовать. Но я что-то не могу найти документального подтверждения что кто-то из них вызывается после окончательной инициализации зависимостей. Везде пишут что они взаимозаменяемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2130216]: |
0ms |
get settings: |
20ms |
get forum list: |
30ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
80ms |
get topic data: |
24ms |
get forum data: |
5ms |
get page messages: |
87ms |
get tp. blocked users: |
3ms |
| others: | 319ms |
| total: | 584ms |

| 0 / 0 |
