数据访问对象未在服务类中自动装配

时间:2015-10-04 09:26:14

标签: java spring autowired

下面是我的服务层代码,但由于某种原因,我的@Repository LoginDataAccess为空。

@Service
public class LoginService implements BeanFactoryAware {

    @Autowired
    private LoginDataAccess loginDataAccess;

    public void addUserLoginDetails(LoginData loginData) {
        LoginDetails loginDetails = new LoginDetails();
        loginDetails.setUsername(loginData.getUsername());
        loginDetails.setPassword(loginData.getPassword());
        if(loginDataAccess == null) {
            System.out.println("loginDAtaAccess is null"); // this prints on console
        }

        loginDataAccess.insertLoginDetails(loginDetails); // throws NullPointerException
    }

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        System.out.println("setting beanfactory");
        System.out.println(beanFactory.containsBean("loginDataAccess")); // this prints true 
    }

}

1 个答案:

答案 0 :(得分:0)

我的猜测是你使用java“new”关键字在某处实例化了你的LoginService。如果你这样做,那么Spring无法知道它的存在,因此无法自动装配任何东西。要验证这个猜测,我需要查看您使用此LoginService的位置。

也许this question可以帮到你。