注解@Autowired、@Resource、@Qualifier与@Value的使用及使用时的注意事项

Spring的自动装配:

自动装配主要有两种方式:byName和byType。
byName:会根据Field的名字进行装配,会查找beanId及beanName选出符合进行装配。
byType:会根据Field的类型进行装配,会去查找bean的class类型选出符合进行装配。
如下xml配置文件:如果是byName则回去查找id属性,后者则去找对应的class属性进行装配。
<bean id="userService" class="com.mirac.service.UserService">
 
</bean>

@Autowired

该注解是Spring的注解,可以使用在构造方法上、set方法、参数和字段上。可以定义required属性(默认为true),当定义为false时找不到装配对象时则不进行装配,否则:通过byType进行装配,如果只找到一个则进行装配,如果找到多个则通过注入的对象变量名称作为bean的id在spring容器中查找,找到则注入成功,找不到则会抛出异常。
注意:当使用注解注入属性(字段)时,set方法可以省略。

@Resource

该注解是JSR-250的注解,可以使用在set方法和字段上。属性有name和type,如果未指定name和type的值则默认按照byName进行查找。根据不同的属性查找规则如下:

1、如果指定了name属性,则按照name查找,找到且类型匹配则装配,否则配抛出异常
2、如果指定了name和type属性,则按照name和type精确查找,找到则装配,找不到抛出异常
3、如果仅指定了type属性,则按照type查找,如果只找到一个则装配,否则抛出异常
4、如果name和type都没有指定,则默认按照作用的属性名字查找,找到则装配,找不到则按照类型找,找到一个则装配,找不到或者找到多个抛出异常

以上两注解推荐使用@Resource注解,可以减少与spring的耦合,同时针对byName和byType有更多的选择方式,实现精确地装配。

@Qualifier

该注解是spring的注解,有属性name用于指定bean的id。在自动按照类型装配的基础之上,再按照bean的id注入。它在给字段注入时不能独立使用,必须和@Autowired一起使用(用于解决通过byType装配时找到多个符合的bean);但是给方法参数注入时,可以独立使用。

注意:以上三个注解都只能注入(装配)其他bean类型的数据,而基本类型和String类型无法使用上述注解实现。另外,集合类型的注入只能通过xml来实现。

@Value

该注解是spring的注解,有属性value用于指定值。该注解注入基本数据类型和string类型数据。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值