Ошибка Spring: AbstractApplicationContext#getBean(Class<T> requiredType) выдает null

166
04 февраля 2020, 05:10

Нужна ваша помощь и подсказка. Дело, думаю, в какой-то мелочи, которую я в упор не вижу. Ковыряю потихоньку Spring по лекции Евгения Борисова (https://www.youtube.com/watch?v=BmBr5diz8WA) и столкнулся с такой проблемой (репозиторий с проектом на гитхабе https://github.com/redbeard3/SpringProject/tree/master/src/main) - выполнение кода падает с ошибкой:

апр 20, 2019 6:21:16 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [common_beans.xml]
Exception in thread "main" java.lang.NullPointerException
    at redbeard.Runner.main(Runner.java:8)
Process finished with exit code 1

Причем:

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("common_beans.xml");

отрабатывает нормально, бин из common_beans.xml с id='terminatorQuoter' настраивается, то есть в поле repeat бина terminatorQuoter выставляется нужное значение:

Ошибка именно в

context.getBean(TerminatorQuoter.class).sayQuote();

потому что:

 context.getBean(TerminatorQuoter.class) выдает null

Однако, если я убираю все, что связано с аннотацией InjectRandomInt, то есть ее вообще не использую, и в методе sayQuote() просто вывожу сообщение:

System.out.println(message);

то все работает. Подскажите, где что упустил. Хотя лекцию несколько раз пересмотрел, тщательно выверил все, что сделал.

Answer 1

InjectRandomIntAnnotationBeanPostProcessor в методе postProcessAfterInitialization возвращает null - замените на o. А вообще, насколько помню, Евгений как раз хотел показать почему надо вытаскивать бины по интерфейсу, а не по классу. Потому что из BeanPostProcessor класс может вернуться совсем другой, но реализующий тот же интерфейс.

READ ALSO
Тут выдает ошибку Exception in thread &ldquo;main&rdquo; помогите пж [закрыт]

Тут выдает ошибку Exception in thread “main” помогите пж [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском»

248
ImageIO.write слишком медленный

ImageIO.write слишком медленный

Хочу реализовать передачу видео по UDP(тут, очевидно, только получение картинки)Строка №3 преобразует картинку очень медленно

169
Переход с общим элементом

Переход с общим элементом

Цель сделать переход между окнами с общим элементом (изображением)Нужно из окна А перейти в окно B с общим изображением (изображение ниже)

202