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

Data Access Object is not being Autowired in service class

下面是我的服务层代码,但由于某些原因,我的 @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 
    }

}

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

也许this question可以帮到你。