@Bean(initMethod = "init") @Primary @Qualifier("primaryDataSource") @ConfigurationProperties(prefix="spring.datasource.primary") public DataSource primaryDataSource() { return DruidDataSourceBuilder.create().build(); } @Bean(initMethod = "init") @Qualifier("secondaryDataSource") @ConfigurationProperties(prefix="spring.datasource.secondary") public DataSource secondaryDataSource() { return DruidDataSourceBuilder.create().build(); }
时间: 2024-04-25 13:26:18 浏览: 171
这是一个使用Spring Boot的@ConfigurationProperties注解配置多数据源的代码片段。@ConfigurationProperties注解可以将application.properties文件中以"spring.datasource.primary"和"spring.datasource.secondary"为前缀的属性值注入到对应的DataSource实例中。@Bean注解则表示将这些DataSource实例作为Spring容器中的Bean进行管理。@Primary注解表示primaryDataSource是默认的数据源,当Spring需要注入DataSource类型的Bean时,会优先选择primaryDataSource。@Qualifier注解则表示当有多个DataSource类型的Bean时,可以通过指定其名称来选择对应的Bean。
相关问题
@Bean(initMethod = "init") @Primary @Qualifier("primaryDataSource") @ConfigurationProperties(prefix="spring.datasource.primary") public DataSource primaryDataSource() { return DruidDataSourceBuilder.create().build(); } @Bean(initMethod = "init") @Qualifier("secondaryDataSource") @ConfigurationProperties(prefix="spring.datasource.secondary") public DataSource secondaryDataSource() { return DruidDataSourceBuilder.create().build(); }两个method方式都命名init可以吗
不可以,这两个方法都使用了相同的名称 "init" 作为初始化方法的名称,这会导致 Spring 在初始化时无法区分这两个方法。为了避免这种问题,你需要为这两个方法分别指定不同的初始化方法名称,例如:
```
@Bean(initMethod = "initPrimary")
@Primary
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(initMethod = "initSecondary")
@Qualifier("secondaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DruidDataSourceBuilder.create().build();
}
```
这里我将第一个方法的初始化方法名称改为 "initPrimary",第二个方法的初始化方法名称改为 "initSecondary",这样 Spring 在初始化时就可以正确地识别这两个方法了。
@Primary @Bean(name = "mysqlPs90DataSource") @Qualifier("mysqlPs90DataSource") @ConfigurationProperties(prefix = "spring.mysql-ps90.datasource") public DataSource mysqlPs90DataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "mssqlDataSource") @Qualifier("mssqlDataSource") @ConfigurationProperties(prefix = "spring.mssql.datasource") public DataSource mssqlDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "iobd2DataSource") @Qualifier("iobd2DataSource") @ConfigurationProperties(prefix = "spring.iobd2.datasource") public DataSource iobd2DataSource() { return DataSourceBuilder.create().build(); }
这段代码是在Spring Boot应用程序中创建三个数据源的配置。@Bean注释告诉Spring容器需要实例化这些对象并作为bean进行管理。@Primary注释指定了默认的数据源,如果有多个数据源的话,那么默认会使用该注释的数据源。@Qualifier注释用于指定bean的名称。@ConfigurationProperties注释用于从application.properties文件中读取相关配置属性。在这个例子中,我们使用了三个不同的前缀来指定不同的数据源配置属性。最后,每个数据源都通过调用DataSourceBuilder.create().build()方法来创建并返回。
阅读全文