Spring的bean中有name属性,可以用来区分两个相同(部分属性不一样)的bean。
最近我在做influxdb多数据源的时候用到,所以这里已influxdb为示例,仅供参考。
看代码:
@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(name = "influx1")
private InfluxDB influxDB1;
@Resource(name = "influx2")
private InfluxDB influxDB2;
这里是在使用的地方使用@Resource注解的name属性来指定使用具体的bean。
网上有说@Autowired可以通过type之类的来获取bean的value,但是这块一直没弄好,如果有知道的朋友可以补充过来。