Проблемы с аннотацией @Autowire - PullRequest
1 голос
/ 06 сентября 2011

В моем классе A у меня автоматическая разводка класса B с аннотацией @Service.В моем классе B я автоматически подключаю класс C и использую ссылку на этот класс внутри метода @Transactional в классе B.

И кажется, что Auto-Wiring ничего не сделал, потому что я получил java.lang.NullPointerException

Пример класса A:

@Controller
public Class controller{
   @Autowired
   private MyService myservice;
}

Класс B

@Service
public Class serviceImpl{
   @Autowired
   private DAOInterface dao;
   //nullpointer

   @Transactional
   public String getItem(){
    return dao.getItem(2);
   }

}

Любая помощь?

Ответы [ 3 ]

4 голосов
/ 06 сентября 2011

Если вы хотите использовать аннотацию @Autowired для своей проводки Spring, вам нужно зарегистрировать соответствующие BeanPostProcessor для помощи.Spring может сделать это за вас, включив в свою конфигурацию Spring следующий элемент:

<context:annotation-config/>

Посмотрите раздел * 9 * в документации по Spring 3.0 для получения дополнительной информации по этому вопросу.

Кроме того, поскольку кажется, что вы используете аннотации стереотипа (@Component, @Service, @Controller), возможно, вы пытаетесь отказаться от проводки Spring XML (или уменьшить ее).Вам нужно убедиться, что вы включаете элемент component-scan в свой Spring XML.

ПРИМЕЧАНИЕ. Если вы включаете component-scan, вам не нужно использовать элемент annotation-config.

<context:component-scan base-package="your.package.name"/>

Для получения дополнительной информации об этом см. Раздел 3.10 в документации по Spring 3.0 .

1 голос
/ 06 сентября 2011

Убедитесь, что DAO настроен каким-то образом ... будь то с аннотацией (@Service, @Component, @Repository), в конфигурации xml или другими способами.

Если это не поможет, нам понадобится дополнительная информация.

0 голосов
/ 20 декабря 2017

Класс обслуживания

@Service
public Class serviceImpl implements MyService {
   @Autowired
   private DAOInterface dao;
   //nullpointer

   @Transactional
   public String getItem(){
    return dao.getItem(2);
   }

}

spring-servlet.xml

<context:annotation-config/>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...