Bean name用法

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,但是这块一直没弄好,如果有知道的朋友可以补充过来。