![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| vogdb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.1.2010 Репутация: нет Всего: нет |
Привет всем. Натолкнулся на странную штуку. Если иметь два бина с ApplicationScoped и один знает о другом через проперти, то получается так, что на самом деле не знает. Server в конструкторе имеет config == null. Никто не сталкивался? Есть ли решение?
Происходит это на jsf2.0.2 и glassfish3 Это сообщение отредактировал(а) vogdb - 5.8.2010, 18:14 |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Вообще говоря, сначала происходит конструирование объекта, а только потом инъектирование зависимостей. Куда их инъектировать если объект еще не создан? А при создании объекта вызывается его конструктор. Короче говоря, если нужно сделать инициализацию, то смотрите аннотация @PostConstruct. |
|||
|
||||
| vogdb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.1.2010 Репутация: нет Всего: нет |
Спасибо, в очередной раз помогаете =)
|
|||
|
||||
| Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 1 Всего: 10 |
-------------------- |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Я затрудняюсь сказать, чей конструктор вызывается первым: зависимости или объекта которому нужна эта зависимость (хотя это не сложно проверить). Могу лишь утверждать, что не создав объект в него зависимость не внедрить. Вызов конструктор, как часть процесса создания объекты происходит раньше, чем ему будут просечены зависимости. Что вполне естественно. Инъекции через параметры конструктора, насколько мне известно в JSF нет. |
|||
|
||||
| Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 1 Всего: 10 |
Если посмотреть на тот же Spring, он будет инициализировать все объекты, которые инжектятся, потом только те, в которые инжектятся и никак иначе. Любой IoC должен уметь разруливать зависимости. Мне кажется нужно все-таки искать ошибку где-то в другом месте.
Это сообщение отредактировал(а) Старовъръ - 7.8.2010, 11:31 -------------------- |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Старовъръ, автор топика не может получить ссылку на зависимость внутри конструктора. Вы и в Spring её не получите внутри конструктора, если конечно не будет использовано construncor injection. |
|||
|
||||
| Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 1 Всего: 10 |
Оу, я прошу прощение, не заметил, что речь идет о конструкторе..
-------------------- |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
||||
|
||||
![]()
|
| Правила форума "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. |