问题如
http://zhaoshunxin.iteye.com/blog/1166266
请各位大侠给看看
[code="java"]
@Resource("helloService")
public class HelloService(){
...
}
[/code]
在类Class上的注解应该使用诸如@Service、@Controller、@Repository等,只有在引用实例的使用才使用注解@Resource,而且应该加上属性name(表示被引用资源的名称),即“@Resource(name="helloService")”
所以,上面正确的写法应该是这样的:
([color=red]创建[/color]一个名称为helloService的实例)
[code="java"]
@Service(name="helloService")
public class HelloService(){
...
}
[/code]
然后在Controller包中这样使用:
([color=red]引用[/color]这个名称为helloService的实例)
[code="java"]
@Controller
public class HelloController{
Resource(name="helloService")
private HelloService helloService;
}
@Resource
private HelloService helloService;
要定义以"helloService"为名称的bean
我试了一下:
[code="java"]public class HelloController implements Controller{
private Logger logger = Logger.getLogger(this.getClass().getName());
private String helloWorld; // 该属性用于获取配置文件中的helloWorld属性
private String viewPage; // 用于获取配置文件中的viewPage属性
@Resource //为什么不能使用@Resource
private HelloService helloService;[/code]
[code="java"]@Service
public class HelloService {
@Resource //为什么不能使用@Resource
private HelloDao helleDao;[/code]
[code="java"]@Repository
public 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();
}
}[/code]
只是将DAO小改了一下,然后使用resource都是可以的。
只要你注解配置没问题,完全可以使用。
通常情况下,@Resource默认是按[color=red]名称[/color]匹配的,按你的配置,它应该默认创建单例[color=red]H[/color]elloService(主要H是大写的)
通常情况下,我是这样写的:
[code="java"]
[color=red]@Service(name="helloService")[/color]
public class HelloService {
@Resource //为什么不能使用@Resource
private HelloDao helleDao;
[/code]
然后再Controller包中这样引用:
[code="java"]
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;
[/code]