Spring@Autowired自动注入Dao,取出为null

造成这种原因的一种情况。

@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());

你可能感兴趣的:(Java框架)