09-spring基础注解 @Autowire、@Qualifier、@Primary和@Value

@Autowire/@Qualifier/@Primary/@Value

一、@Value赋值

  • 如果bean被添加到IOC容器,对其属性不做任何初始化,那么相关属性是null或者默认值(基本类型)。
    可以通过@Value赋值,赋值方式有:
基本字符
spring EL表达式

二、依赖注入

2.1 @Autowire

  • 注入bean,可以指定requird属性,默认为true

2.2 @Resource(JSR250)

  • 效果与@Autowire一样,但是不支持@Primary和required属性

2.3 @Inject(JSR330)

  • 效果与@Autowire一样, 支持@Primary功能, 可用于非spring框架,但是不支持required属性 ,需要引入第三方包javax.inject,使用不方便

  • 对比:Autowired属于spring的, 不能脱离spring, @Resource和@Inject都是JAVA规范推荐大家使用@Autowired

2.4 @Qualifier

  • 到容器中获取指定id的bean

三、bean修饰

@Primary

  • Spring加载bean时,优先加载的bean,作为优先级最高的bean。

四、对比

4.1 表格对比

注解相同点注解提供是否支持required参数是否支持@Primary的Bean优先注入是否支持指定beanId注入
@Autowire可实现bean的依赖注入Spring的专有注解支持支持通过@Qualifier指定注入特定bean
@Resource可实现bean的依赖注入JSR250规范不支持不支持通过参数name指定注入bean
@Inject可实现bean的依赖注JSR330规范不支持支持通过@Named注解指定注入bean

4.2 注意

  • 详细的注意事项可以参考 10-spring @Primary和@Qualifier辨析
如果同类型存在多个bean在IOC容器,beanid不一样,并且这些bean都没有使用@Primary注解,那么@Autowire注入的时候,是使用变量名作为beanId去注入的,
如果同类型存在多个bean在IOC容器,beanid不一样,但是这些bean中有一个bean使用@Primary注解,那么@Autowire注入的时候,会优先注入这个加了@Primary注解的bean
,想要注入其他的没有加@Priamry注解的bean的话,需要使用@Qualifier指定beanid进行注入 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值