|
|
|
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:20:43 |
|
||
|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина.
|
|||
|---|---|---|---|
|
#18+
UsikПроблема в том что сервисы, в данном примере cityService и countryService не успевают проинициализироваться до момента использования экземпляра ServiceDirector. ... момента первого использования ServiceDirector все проперти в нем были уже проинициализированы? ничего не понял, что за первое использование и чем оно отличается от использование в контроллерах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 10:34:20 |
|
||
|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина.
|
|||
|---|---|---|---|
|
#18+
Каким образом создается экземпляр EntityInitor? и как в него инжектится ServiceDirector? Надеюсь не оператором new ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 11:28:58 |
|
||
|
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:39 |
|
||
|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина.
|
|||
|---|---|---|---|
|
#18+
pavel_nvКаким образом создается экземпляр EntityInitor? и как в него инжектится ServiceDirector? Надеюсь не оператором new ?) +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 11:34:49 |
|
||
|
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, 12:49:12 |
|
||
|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина.
|
|||
|---|---|---|---|
|
#18+
А если этот код,который, я так понимаю и проверяет на null, в обычном методе компонента InitFactory вызвать? Код: java 1. 2. Ведь, на сколько я понимаю, Код: java 1. 2. вызывается в момент создания текущего бина, и не факт что вся иерархия зависимых бинов полностью инициализирована, ему достаточно что "первые" предки созданы (ведь их свойства можно установить и позже)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 13:33:00 |
|
||
|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина.
|
|||
|---|---|---|---|
|
#18+
Да и в xml определении его вроде как надо прямо указывать Код: xml 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 13:37:11 |
|
||
|
Spring, как сделать чтобы проперти были проинициализ. до момента использования бина.
|
|||
|---|---|---|---|
|
#18+
Можно ещё @PostConstruct попробовать. Но я что-то не могу найти документального подтверждения что кто-то из них вызывается после окончательной инициализации зависимостей. Везде пишут что они взаимозаменяемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 13:40:28 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38104765&tid=2130216]: |
0ms |
get settings: |
21ms |
get forum list: |
22ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
53ms |
get topic data: |
23ms |
get forum data: |
5ms |
get page messages: |
94ms |
get tp. blocked users: |
3ms |
| others: | 326ms |
| total: | 559ms |

| 0 / 0 |
