我有两个DataSource bean和两个DataSourceInitializer bean,每个DataSource一个。 这些配置位于不同的类文件中,但是两个DataSourceInitializer都尝试设置DataSourceOne。

我怎样才能告诉DataSourceInitializerTwo使用(注入?)DataSourceTwo bean?

//Data Source 1
@Bean
public DataSource dataSourceOne() {
    JdbcDataSource ds = new JdbcDataSource();
    ds.setUrl("jdbc:h2:mem:app1db;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS app1\\;SET SCHEMA app1");
    ds.setUser("app1");
    ds.setPassword("app1");
    return ds;
}

@Bean
public DataSourceInitializer dataSourceInitializerOne(final DataSource dataSource) {
    final DataSourceInitializer initializer = new DataSourceInitializer();
    initializer.setDataSource(dataSource);
    initializer.setDatabasePopulator(DatabasePopulator());
    return initializer;
}

//Data Source 2
@Bean
public DataSource dataSourceTwo() {
    JdbcDataSource ds = new JdbcDataSource();
    ds.setUrl("jdbc:h2:mem:app1db;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS app2\\;SET SCHEMA app2");
    ds.setUser("app2");
    ds.setPassword("app2");
    return ds;
}

@Bean
public DataSourceInitializer dataSourceInitializerTwo(final DataSource dataSource) {
    final DataSourceInitializer initializer = new DataSourceInitializer();
    initializer.setDataSource(dataSourceTwo);
    initializer.setDatabasePopulator(databasePopulatorTwo());
    return initializer;
}

#1楼 票数:1 已采纳

DataSourceInitializer方法似乎基于参数名称注入DataSource bean。 只需使返回DataSource的方法的名称与相应的初始化方法所采用的DataSource参数的名称相匹配即可。

//Data Source 1
@Bean
public DataSource dataSourceOne() {
    JdbcDataSource ds = new JdbcDataSource();
    ds.setUrl("jdbc:h2:mem:app1db;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS app1\\;SET SCHEMA app1");
    ds.setUser("app1");
    ds.setPassword("app1");
    return ds;
}

@Bean
public DataSourceInitializer dataSourceInitializerOne(final DataSource dataSourceOne) {
    final DataSourceInitializer initializer = new DataSourceInitializer();
    initializer.setDataSource(dataSourceOne);
    initializer.setDatabasePopulator(DatabasePopulator());
    return initializer;
}

//Data Source 2
@Bean
public DataSource dataSourceTwo() {
    JdbcDataSource ds = new JdbcDataSource();
    ds.setUrl("jdbc:h2:mem:app1db;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS app2\\;SET SCHEMA app2");
    ds.setUser("app2");
    ds.setPassword("app2");
    return ds;
}

@Bean
public DataSourceInitializer dataSourceInitializerTwo(final DataSource dataSourceTwo) {
    final DataSourceInitializer initializer = new DataSourceInitializer();
    initializer.setDataSource(dataSourceTwo);
    initializer.setDatabasePopulator(databasePopulatorTwo());
    return initializer;
}

  ask by Roger translate from so

未解决问题?本站智能推荐:

3回复

无法自动装配。有多个'DataSource'类型的bean

我正在尝试通过自动装配数据库 我的application.yml有一个数据源 但是我收到一条错误消息。 我觉得很奇怪,因为我在application.yml只定义了一个数据源,据我所知,我没有定义任何其他数据源。 我尝试了配置,但我仍然遇到同样的问题。 这是我的'pom'
1回复

错误:找不到所需的类型为'javax.activation.DataSource'的bean的字段dataSource

我在SPringBoot中的数据源有问题。 我想使用JDBC并从数据源获取数据,但出现错误:说明: com.example.My.MyApplication中的字段dataSource需要找不到类型为'javax.activation.DataSource'的bean。 行动: 考
2回复

创建名为“spring.datasource.CONFIGURATION_PROPERTIES”的bean时出错

我在启动Spring Boot Project时遇到错误,下面是Exception片段 尝试@Autowired java.sql.Datasource bean时发生错误。 但是,通过包含Hibernate Validator依赖项解决了该问题 pom.xml片段 我担心的是为
1回复

如何通过XML中的bean而不是application.properties在Spring中配置DataSource?

我已经使用STS创建了新的Spring Starter项目。 在pom文件中,我添加了: 然后,我创建了beans.xml文件: 并添加到我几乎为空的web.xml文件中: 我的DatabaseService类如下所示: 我想使此配置正常工作。 由于某些原因,这些bean未
1回复

将一个DataSource对象用于多个数据库连接-一次仅使用一个连接

我们是否可以仅定义一个DataSource对象并在运行时动态地将其连接到不同的数据库? 我一次只需要连接到一个数据库。 我将传递数据库名称作为参数。 我将从属性文件中查找数据库URL和其他详细信息,然后需要使用数据库URL连接到数据库。 简而言之-我不知道需要连接的数据库数量。 我
1回复

在Spring框架中创建多个DataSource成本很高

在我的 spring mvc 应用程序中,我有两个不同的 MySql 数据库连接。 一种用于整个数据存储,另一种用于登录历史记录 - 在特定时间段内每天插入数据。 我为 jdbcTemplate 创建了两个单独的数据源(一个通过 spring.xml,另一个通过配置类)。 两者都将在 tomcat
2回复

使用IAM身份验证和SpringJDBC(DataSource和JdbcTemplace)访问AWSRDS

我无法弄清楚如何实现这一点。 任何帮助和/或指示将不胜感激。 目前,我的 Java/Spring 应用程序后端部署在EC2 上,并使用常规 Spring JDBC 设置成功访问RDS上的MySQL 。 即,将数据库信息存储在application.properties ,并在@Configurati
1回复

使用springjdbc批量选择多个

我必须执行一个查询,其中where子句中有多个属性,并且我们有多个此类请求。 例如。 我们必须执行以下查询 我有1000个这些值的集合,例如(1000,wireless),(2000,wire)。 。 。 。 这意味着我想执行多个选择语句,例如 我如何批量运行此select语