作用
和@Autowired注解类似,也是用来注入依赖对象的,spring容器会对bean中所有的字段、方法进行遍历,标注有@Resouce注解的,都会进行注入。@Autowired是在javax中定义的注解,并不是spring中定义的注解。
查找方式:@Resource是先到容器按照名字查找,同一名字只有一个则直接注入,同名不同类时则再按照类型查找。
使用范围:任何类型、字段、方法
定义
@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)
public @interface Resource {
String name() default "";
..其他不常用的参数省略
}
使用
1、用于字段
@Component
public class Service2 {
@Resource
private Service1 service1;
}
2、用于方法
@Component
public class Service {
private Service1 service1;
@Resource
public void setService1(Service1 service1){
this.service1 = service1;
}
}
3、用于Collection、Map中
1、注入到Collection中,被注入的类型为Collection类型或者Collection子接口类型,注意必须是接口类型
Collection<IService>
List<IService>
Set<IService>
2、注入到Map中,被注入的类型为Map类型或者Map子接口类型,注意必须是接口类型
Map<String,IService>
下面分别先定义一个接口,两个接口的实现类
public interface IService {
}
@Component
public class Service {
@Resource
private List<IService> services; //@1
@Resource
private Map<String, IService> serviceMap; //@2
}
@1: 注入IService类型的所有bean
@2: 注入一个map
原创文章,作者:jiafegn,如若转载,请注明出处:https://www.techlearn.cn/archives/264