@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可以吗
时间: 2024-03-01 12:53:08 浏览: 130
不可以,这两个方法都使用了相同的名称 "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 在初始化时就可以正确地识别这两个方法了。
相关问题
@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(); }
这是一个使用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。
阅读全文