数据访问对象未在服务中自动装配 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可以帮到你。
下面是我的服务层代码,但由于某些原因,我的 @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可以帮到你。