Resource注解

介绍@Resource的配置。

指定了name/type的情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 如果指定了name或者type,则直接通过name或者type去进行匹配

// beanName和beanType一样则匹配成功
@Resource(name="beanName", type=beanType.class)
private XXX xxx;

// beanName一样则匹配成功
@Resource(name="beanName")
private XXX xxx;


// beanType一样则匹配成功
@Resource(type=beanType.class)
private XXX xxx;

具体例子

1
2
3
4
5
6
7
8
9
// bean的id注册为ps
@Component(value="ps")
public class Person{

}

// 名字匹配上注册的id了,匹配成功
@Resource(name="ps")
private Person person;

未指定name/type的情况

  1. 先匹配变量名
1
2
3
// 变量名ps和bean id ps匹配上了,匹配成功
@Resource
private Person ps;
  1. 再匹配类型
1
2
3
4
// 变量名person和bean id ps匹配不上,转而匹配类型
// person变量属性的类型为Person类,容器中的id为ps的bean的类型也为Person类型,因此此种情况下也可以匹配
@Resource
private Person person;