@Configuration 可理解为用 spring 的时候 xml 里面的 <beans> 标签
@Bean 可理解为用 spring 的时候 xml 里面的 <bean> 标签
SpringBoot 项目需要保证启动 SpringBoot 的 main 入口类在加了 @Configuration,@Bean 类的上层包就行
而如果是 spring 项目,就需要扫描包 <context:component-scan base-package="com.xxx.xxx" />,才能使用注解
@Bean 定义的实体类在 spring 容器管理中是单例的,但并不保证在 jvm 是单例的
@Bean 有一个 name 属性,可以用来区分两个相同(部分属性不一样)的 bean。
例如,定义多数据源:
@Bean(name = "db1")
public InfluxDB influxDB1(){
InfluxDB influxDB = InfluxDBFactory.connect("http://localhost:8086");
influxDB.setDatabase("db1")
return influxDB;
}
@Bean(name = "db2")
public InfluxDB influxDB1(){
InfluxDB influxDB = InfluxDBFactory.connect("http://localhost:8089");
influxDB.setDatabase("db2")
return influxDB;
}
调用方式:
@Resource(name = "db1")
private InfluxDB db1;
@Resource(name = "db2")
private InfluxDB db2;