Как исправить исключение NullPointerException в Autowired JdbcTemplate

Я переписываю свой вопрос, чтобы, надеюсь, иметь больше смысла и получить некоторую помощь.

У меня есть классы Controller, 2 ClassRepository и 2 Service (один из которых не аннотирован @Service, так как я получаю сообщение об ошибке, когда аннотирую его, поэтому вместо этого я просто использую его как класс)

Класс без аннотации @Service Я просто передаю объект rateRepository из аннотированной службы в неаннотированную службу.

Если я выполню следующий код в своей аннотированной службе

String zone = rateRepository.getPurolatorZone(request.getShipToZip().substring(0,3));

это прекрасно работает.

однако в моем неаннотированном классе, где я создаю экземпляр класса

InternationalRateService internationalRateService = new InternationalRateService(this.rateRepository);

Обновлено: Я аннотировал свой класс InternationalRateService с помощью @Service и решил автоматически подключить сам репозиторий, и я все еще получаю исключение нулевого указателя в методе getPurolatorZone. Я не понимаю, почему он работает в одном сервисе, а не в другом, когда они настроены одинаково.

Второе обновление: как оказалось, я идиот, потому что я даже не подумал проверить, возможно ли, что строка, которую я передаю в репозиторий, была тем, что на самом деле вызывало ошибку. Оказывается, я никогда не устанавливал локальную переменную shiptozip таким образом. да я идиот.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
125
1

Ответы 1

Spring будет внедрять зависимости только в управляемые bean-компоненты Spring. Если вы создаете объект с new, то это не управляемый bean-компонент Spring.

В вашем случае объект InternationalRateService не управляется, так как вы его создали оператором new.

Итак, внедрите InternationalRateService в свой контроллер, чтобы все зависимости были внедрены

Другие вопросы по теме