|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Всем привет! Почему объект testBean равен null в методе ExecutorListener.contextInitialized()? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
автор08-Sep-2020 10:05:31.829 SEVERE [http-nio-8080-exec-6] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [com.example.beantester.ExecutorListener] java.lang.NullPointerException at com.example.beantester.ExecutorListener.contextInitialized(ExecutorListener.java:24) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2020, 10:15 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Molasar, Потому что autowired не сделался. По моему TestBean можно засунуть агрументом в метод и сделать его @AutoWired, но это - не точно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2020, 10:51 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Чтобы сработал @Autowired, нужно сделать вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2020, 11:17 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Molasar, Потому что JavaEE/JakartaEE можно засунуть в Spring, а наоборот нужно извратиться. :-) Сделайте свой бин TestBin бином JavaEE/JakartaEE. Аннотации @Statefull, @Stateless, @Singlton. Обращаться через @Inject ( а не @Autowired) Ну или используйте только Spring :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2020, 12:37 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Похожая ситуация Это работает Код: java 1. 2. 3. 4. 5.
А это нет, объект NULL Код: java 1. 2. 3. 4. 5.
Все дело в наследовании или в @Controller и @Component? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 10:08 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
SQL2008 Похожая ситуация ... Все дело в наследовании или в @Controller и @Component? А если попробовать не через аннотацию @Controller, а через класс @Сonfig и @Bean ? И инжекцию сделать через конструктор, а не через поле. Хотя вообще-то странно. По идее @Component должен при загрузку приложения падать (ну или в логах ругнуться). С ошибкой создания бина. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 12:16 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
mad_nazgul А если попробовать не через аннотацию @Controller, а через класс @Сonfig и @Bean ? И инжекцию сделать через конструктор, а не через поле. Хочется чтобы все было в едином стиле. И чисто академически интересует этот вопрос - почему в одном месте работает, а в другом нет? Чего я не понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 19:20 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
SQL2008, А каким образом securityHandler создаётся? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 22:16 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
SQL2008 mad_nazgul А если попробовать не через аннотацию @Controller, а через класс @Сonfig и @Bean ? И инжекцию сделать через конструктор, а не через поле. Хочется чтобы все было в едином стиле. И чисто академически интересует этот вопрос - почему в одном месте работает, а в другом нет? Чего я не понимаю? Чтобы понять, нужно глубоко разбираться в жизненном цикле бинов. И там есть куча неоднозначного поведения, в зависимости от того как создаются бины. Т.к. по двум классам нельзя понять как поднимается Spring-context, то сказать почему - не возможно. Пока посмотрите как создается бин SecurityHandler и где он используется. А так рекомендую мигрировать с аннотаций, на @Config клаассы и инжекцию через конструктор. 1) Легче будет писать Unit-тесты, без поднятия всего контекста 2) Вся "грязь" будет в специально отведенном загончике 3) Можно будет отлаживать поднятие контекста ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 06:50 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
mad_nazgul есть куча неоднозначного поведения, в зависимости от того как создаются бины. Свои плюсыминусы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 09:18 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Lelouch SQL2008, А каким образом securityHandler создаётся? В application-context.xml Код: java 1. 2.
А потом прописывается в security-config.xml Код: java 1. 2. 3. 4. 5.
Причем все работает, управление после успешной авторизации получает. Но внутри не могу связать bean ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 18:04 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Zzz79 а зачем ты ставишь компонент над классом который ты уже записал в бины ,причем с другим названием в контекст Удаление @Component никак не повлияло, также не работает! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 18:59 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Zzz79, не биндится объект, остается NULL Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 19:07 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Взял пример отсюда ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 19:10 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Zzz79 а вот убери ты из контекста его и там сразу заработает) Ещё раз для тех кто с бронепоезда - что нужно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 19:42 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Zzz79, почему в другом классе работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 19:52 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Zzz79, спрошу по другому. Я правильно понимаю, что @Autowired это типа ссылка (+конструктор) на некий общий объект? Можно-ли использовать его из разных классов? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 20:03 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Zzz79 в твоем случае у тебя изначально два бина одного класса с разными Id используется тот ,что ты запихал в хмл а то что у тебя в коде там прописано спрингу пофиг если не указана анотайшн бейсед конфиг Это мне нужно осмыслить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 06:39 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
SQL2008 В application-context.xml Код: java 1. 2.
Причем все работает, управление после успешной авторизации получает. Но внутри не могу связать bean Ну дык правильно! Вы его в xml-конфиге не заинжектили! Надо так: Код: java 1. 2. 3. 4.
P.S.используйте один стиль описания/создания бинов. Если используете xml-конфиги, то создавайте бины только там, без аннотаций . Если используете аннотации, то не создавайте бины в xml-конфиге. В противном случае будете много времени тратить на танцы с бубном вокруг spring-context'а ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 06:53 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
mad_nazgul Надо так: Код: java 1. 2. 3. 4.
И обратно не понимаю! Вот весь мой класс Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Какое проперти я должен тут устанавливать, если их нет в принципе? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 08:22 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
SQL2008 Какое проперти я должен тут устанавливать, если их нет в принципе? Как нет?! А Код: java 1. 2.
Это что? Сейчас у вас в приложении вы создали бин, но свойства в него не заинжектили. Если вы создаёте бин через xml, то нужные проперти вы должны прямо указать, что в них положить. Если через аннотации, то, да - там магия. Spring сам анйдет и заинжектит что надо. Поэтому или штаны оденьте, или крестик снимите. Т.е. создавайте бины или через xml, или через аннотации. А так (скорее всего) у вас в контексте два бина. Первый который создался в xml без инициализированного проперти, а второй, который создался через аннотации с инициализированным проперти. Причем в "form login" вы используете бин который создали в xml. Так что либо "не думаете" и инициализируете проперти в xml, либо учите жизненный цикл бинов до полного простветления. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 08:38 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
mad_nazgul, спасибо за потраченное на меня время! Если смогу чем-то быть полезен, то с радостью помогу. Теперь по теме Перевести все в аннотации не получилось, сделал через XML. Так что либо "не думаете" и инициализируете проперти в xml, либо учите жизненный цикл бинов до полного просветления. :-) Пока пошел первым способом, но со вторым мне нужно тоже определяться. Еще раз спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 13:04 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Zzz79, Сразу на спринг бут нельзя переходить. Это бейсик. Вы тут с аннотациями сначала закончите. Чем плохи аннотации? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2020, 10:51 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Zzz79, Сразу на спринг бут нельзя переходить. Это бейсик. Вы тут с аннотациями сначала закончите. Чем плохи аннотации? Аннотации это хорошо. Правда когда сделано так: Код: java 1. 2. 3. 4. 5. 6. 7.
Писать простые unit-тесты становиться затруднительно. Нужно либо мокать через Mockito, либо поднимать контекст. Ну как бы не удобно. Если делать инжекцию, через конструктор, там свои неудобства, зато unit-тесты проще писать. ИМХО самый "идеологически правильный" это конфигурация через классы. Можно конфигурацию и классы с бизнес логикой разнести по разным модулям. С конфигурацией через аннотации мы привязываемся к Spring'у. А через классы или xml, можно конфигурацию и бизнес-логику разнести. Но xml это дно. Поэтому конфигурационные классы. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2020, 19:12 |
|
Autowired bean is null
|
|||
---|---|---|---|
#18+
Zzz79 mad_nazgul, мое имхо -юнит тесты это юзлесс куета для того чтобы списать время разраба и чтобы бизнес платил больше вот и все никакой смысловой и иной нагрузки они не несут ибо пишутся по существующему коду, и могут свалиться если кто то где то забыл что то поменять при изменениях в коде,что собственно и так мгновенно обнаружится при тестировании соотвственно я считаю это бесполезной тратой денег Ну и собственно люди которые считают деньги обходятся без этого искуственного г0вна,а гос корпорации там и так все понятно) Я работал с начала карьеры на гос банк и там без юнит теста твой код даже смотреть никто не будет,а сейчас в частной конторе- зашел а папку тест там 0))ибо нах оно надо ) "Вы просто не умеете их готовить". ;-) Вообще приобретать навык написания unit-тестов нужно уже сейчас. Т.к. с приходом DevOps-практик и прочих аджайлов, всё больше кода будет тестировать приложения. Т.е. мануального тестирования будет всё меньше и меньше. И требования к коду будет, чтобы он был тестируемым. Т.к. любые интеграционные тесты хрупки by default. То упор таки будет на unit-тесты. Которые позволяют протестировать хоть что-то, при этом изменения в коде не будут красить все тесты в красное, если не был изменен интерфейс. И лет через 5-6 код без unit-тестов будет считаться говнокодом. Так что начать тренироваться надо сейчас. Чтобы потом на собеседованиях и код-ревью не краснеть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2020, 08:27 |
|
|
start [/forum/topic.php?fid=59&msg=40015399&tid=2120619]: |
0ms |
get settings: |
7ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
51ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
395ms |
get tp. blocked users: |
0ms |
others: | 296ms |
total: | 759ms |
0 / 0 |