Spring Injection не работает, если я использую «инвентарь» в классе - PullRequest
0 голосов
/ 26 марта 2011

Это был мой предыдущий вопрос SO Spring Injection не работает в другом классе обслуживания

@Service("securityService")
@Transactional

    public class SecurityService implements UserDetailsService {

     protected static Logger logger = Logger.getLogger("service");

     @Autowired
     public RegistrationDAO registrationDAO;


      public String test(){
         logger.debug(registrationDAO.findUserByID(1) );
        return "test";
      }

В приведенном выше коде регистрации DAO неправильно введен и выдает исключение нулевого указателя, но теперь я нашелчто если я удаляю орудия из класса, тогда он работает, как показано ниже

@Service("securityService")
@Transactional

    public class SecurityService {

     protected static Logger logger = Logger.getLogger("service");

     @Autowired
     public RegistrationDAO registrationDAO;


      public String test(){
         logger.debug(registrationDAO.findUserByID(1) );
        return "manta";
      }

Мне нужно использовать этот интерфейс для использования аутентификации Spring Spring, так что мне делать

Трассировка стека

enter code here
  java.lang.NullPointerException
com.vaannila.dao.RegistrationDAOimpl.findUserByID(RegistrationDAOimpl.java:63)
com.vaannila.service.SecurityService.loadUserByUsername(SecurityService.java:68)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

XML-файл

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- Activates various annotations to be detected in bean classes -->


    <!-- Scans the classpath for annotated components that will be auto-registered as Spring beans.
     For example @Controller and @Service. Make sure to set the correct base-package-->
     <bean id="userService" class="com.vaannila.service.UserServiceImpl" />

    <bean id="userValidator" class="com.vaannila.validator.UserValidator" />

     <bean id="userDAO" class="com.vaannila.dao.UserDAO" />
     <bean id="registrationDAO" class="com.vaannila.dao.RegistrationDAO" />

    <!-- Configures the annotation-driven Spring MVC Controller programming model.
    Note that, with Spring 3.0, this tag works in Servlet MVC only!  -->


</beans>

1 Ответ

0 голосов
/ 26 марта 2011

Я также относительно новичок в Spring, но когда у меня возникла эта проблема, и она не работала, я добавил метод set после автоматического подключения, например:

@Autowired
public RegistrationDAO registrationDAO;
public void setRegistrationDAO(RegistrationDAO registrationDAO) {
    this.registrationDAO = registrationDAO;
}

Это то, что сработало для меня, и я использую это для того же, DAO, которые объявлены в вашем XML-файле контейнера сервлета В некоторых случаях я пробовал это без установщика, и это не работало.

Удачи!

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