关于同个类型的类,bean 的名字(name),注入方式总结

关于同个类型的类,bean 的名字(name),不同的注入方式

一、 @Resource方式注入

如下面,同个类有两个不同的bean name ,类的类型一样,属性值不同时:

@Bean(name = "influx1")
public InfluxDB influxDB1(){
    InfluxDB influxDB = InfluxDBFactory.connect("http://localhost:8086");
    influxDB.setDatabase("db1")
            .enableBatch(20,200, TimeUnit.MILLISECONDS);
    return influxDB;
}

@Bean(name = "influx2")
public InfluxDB influxDB2(){
	 InfluxDB influxDB = InfluxDBFactory.connect("http://localhost:8086");
	 influxDB.setDatabase("db2")
	         .enableBatch(20,200, TimeUnit.MILLISECONDS);
	 return influxDB;
}

如果用@Resource注解,可以如下使用:

@Resource(name = "influx1")
private InfluxDB influxDB1;

@Resource(name = "influx2")
private InfluxDB influxDB2;

二、 @Autowired方式注入

背景:由于@Autowired 默认第一按照byType(类的类型),第二byName(l类名\类ID)来加载类,所以当存在类型相同,多个beanname时,想注入某个类,就必须指定根据什么beanName查找,不用@Qualifier注解指定,则会以变量名为为beanName进行查找;值得注意的是,利用注解@Qualifier(“beanName”) 指定beanName,idea会报红,不会编译报错。不指定时,@Autowired用变量名去查找,发现容易没有注册该bean,则会直接编译报错;

假设有如下两个bean,和上面用注解声明bean的效果一样;

//使用方式1:
@Autowired     //(默认第一按照byType,第二byName)
private Demo x; //这样注入是报错的

//使用方式2:
@Autowired     
private Demo z;       不加@Qualifier("z")注解, 以变量名 z 去查对应bean

//使用方式2:
@Autowired     
@Qualifier("z")
private Demo zzz;   加了 @Qualifier("z"),以注解设置的z为beanName查找对应的bean

注:说的有点啰嗦,是因为怕有人对这个理解有些片面或者理解错了,就多唠叨几句,希望我的文章是真实对你有帮助,或者解答了你的疑惑的,而不是浪费你时间的文章;且行且珍惜。。。加油码农仔!!!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值