问题描述
@Resource属性注入测试在java普通工程不是web工程applicationContext.xml配置<context:component-scanbase-package="cn.itcast"></context:component-scan>pojo类:User@ComponentpublicclassUser{privateStringusername;User(){username="shisi";System.out.println("cn.itcast.transaction.Users开始了。。。。。");}publicStringword(){returnusername;}}测试类:publicclasstest2{@ResourceprivateUseruser;@Testpublicvoidceshi(){newClassPathXmlApplicationContext("applicationContext.xml");System.out.println(user);}@Testpublicvoidceshi2(){System.out.println("***********ceshi2*****************");ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext.xml");Useruser2=(User)ctx.getBean("user");System.out.println(user2);System.out.println(user2.word());}}测试结果:测试方法ceshi()中user属性user值为null测试方法ceshi2()中可以正确得到user属性对象程序正常扫描bean各位大哥啊,请多多指教,小弟不胜感激!网上有说@Resource面向接口,我也试过用User实现一个接口,可是不行有说用于setter方法上,小弟也试过,也是不行求了解此问题的大哥指点一二
解决方案
解决方案二:
Resource属性有值,那这个类必须是从context.getBean来的。你ceshi个方法使用的是本类的属性,本类是由junit新建的,不是从spring容器中getBean来的,所以此属性为空。
解决方案三:
多谢前辈指点......
解决方案四:
引用1楼chouy的回复:
Resource属性有值,那这个类必须是从context.getBean来的。你ceshi个方法使用的是本类的属性,本类是由junit新建的,不是从spring容器中getBean来的,所以此属性为空。