造成这种原因的一种情况。
@Service
public class Test {
@Autowired
UserDao userDao;
public int getCoins() {
return userDao.getCoins(1);
}
public static void main(String[] args) throws SQLException {
Test test=new Test();
System.out.println(test.userDao);
System.out.println(test.getCoins());
}
}
这种情况输出就为空,因为ioc容器就没有给Dao注入。就上面代码而言,Test类不能用new的方式获取实例,而是应该用ioc获取。
改成
ApplicationContext ioc=new ClassPathXmlApplicationContext("ApplicationContext.xml");
Test bean = ioc.getBean(Test.class);
System.out.println(bean.userDao);
System.out.println(bean.getCoins());