0
我有兩個DataSource bean和兩個DataSourceInitializer bean,每個DataSource都有一個bean。這些配置位於不同的類文件中,但兩個DataSourceInitializers都嘗試設置DataSourceOne。選擇DataSource bean以用於多個DataSourceInitializers
如何告訴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;
}
我試過這個,但是腳本對它們執行了。不知何故,你需要在DataSourceInitializedEvent之後發生。有誰知道如何在SpringBoot應用程序中註冊DataSourceInitializedEvent?我創建了一個實現接口的類。我還將listerner添加到我的應用程序中:SpringApplication.run(Application.class).addApplicationListener(new MyDataSourceInitializer()); – anschoewe 2015-07-16 23:12:24
此問題與SpringBoot和DataSourceInitializedEvent無關。製作自己的問題,而不是針對不同的問題解決問題。 – Roger 2015-07-20 19:49:23
不夠公平,他們是不同的(但相關的)問題。我會撤銷我的downvote。跟進,(我剛試過,它不會讓我,它說它被鎖定,直到答案被編輯)。 – anschoewe 2015-07-21 21:35:23