autowired和resource注解都可以将bean注入。
最大的不同之处在于:
- autowired:
- 该注解由spring提供。
- 该注解通过类型来查找bean。
- resource
- 该注解由java提供。
- 该注解通过name来查找bean。
resource注解举例:
@Resource
Test t;
该bean注入过程如下:
先查找name为test的bean,如果查询不到,则会查询类型为Test的bean。
假如指定了name,代码如下:
@Resource(name="test123")
Test t;
只要此处指定了name属性,那么只会查询name为test123的bean,查询不到即查询不到,报找不到bean的错误。
autowired注解举例
@Autowired
Test t;
查找类型为Test的bean,查询不到就会报错。
如果想要指定使用name查询,则需要配合Qualifier注解使用,配置如下:
@Autowired @Qualifier("baseDao")
Test t;
首先查询类型为Test的bean,如果查询不到则会查询name为baseDao的bean。还查询不到,就会报错了。
另外,Autowired注解可以指定是否为null,使用required=false属性来指定。此时,该bean即使为null也不会报错。配置如下:
@Autowired(required=false) @Qualifier("baseDao")
Test t;
网友评论