问题描述
问题如 http://zhaoshunxin.iteye.com/blog/1166266请各位大侠给看看 问题补充:hellostory 写道
解决方案
==============================@Resource("helloService") public class HelloService(){ ... } 在类Class上的注解应该使用诸如@Service、@Controller、@Repository等,只有在引用实例的使用才使用注解@Resource,而且应该加上属性name(表示被引用资源的名称),即“@Resource(name="helloService")”所以,上面正确的写法应该是这样的:(创建一个名称为helloService的实例)@Service(name="helloService") public class HelloService(){ ... } 然后在Controller包中这样使用:(引用这个名称为helloService的实例)@Controllerpublic class HelloController{ Resource(name="helloService") private HelloService helloService; }==============================
解决方案二:
只要你注解配置没问题,完全可以使用。通常情况下,@Resource默认是按名称匹配的,按你的配置,它应该默认创建单例HelloService(主要H是大写的)通常情况下,我是这样写的:[color=red]@Service(name="helloService")[/color]public class HelloService {@Resource //为什么不能使用@Resourceprivate HelloDao helleDao;然后再Controller包中这样引用:public class HelloController implements Controller{private Logger logger = Logger.getLogger(this.getClass().getName());private String helloWorld; // 该属性用于获取配置文件中的helloWorld属性private String viewPage; // 用于获取配置文件中的viewPage属性@Resource //为什么不能使用@Resource [color=red]@Resource(name="helloService")[/color]private HelloService helloService;
解决方案三:
我试了一下:public class HelloController implements Controller{private Logger logger = Logger.getLogger(this.getClass().getName());private String helloWorld; // 该属性用于获取配置文件中的helloWorld属性private String viewPage; // 用于获取配置文件中的viewPage属性@Resource //为什么不能使用@Resourceprivate HelloService helloService;@Servicepublic class HelloService {@Resource //为什么不能使用@Resourceprivate HelloDao helleDao;@Repositorypublic class HelloDao { static ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");//得到数据源 private static DataSource ds=(DataSource) context.getBean("dataSource"); static JdbcTemplate jt1=(JdbcTemplate) context.getBean("jt"); public String getId(){ String sql =" select * from test order by code";Map map =jt1.queryForMap(sql);System.out.println(""+map.get("CODE"));return map.get("CODE").toString(); }}只是将DAO小改了一下,然后使用resource都是可以的。
解决方案四:
@Resource private HelloService helloService; 要定义以"helloService"为名称的bean