54 lines
2.0 KiB
Java
54 lines
2.0 KiB
Java
package org.baeldung.dsrouting;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import javax.sql.DataSource;
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
|
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
|
|
|
@Configuration
|
|
public class DataSourceRoutingTestConfiguration {
|
|
|
|
@Bean
|
|
public ClientService clientService() {
|
|
return new ClientService(new ClientDao(clientDatasource()));
|
|
}
|
|
|
|
@Bean
|
|
public DataSource clientDatasource() {
|
|
Map<Object, Object> targetDataSources = new HashMap<>();
|
|
DataSource clientADatasource = clientADatasource();
|
|
DataSource clientBDatasource = clientBDatasource();
|
|
targetDataSources.put(ClientDatabase.CLIENT_A, clientADatasource);
|
|
targetDataSources.put(ClientDatabase.CLIENT_B, clientBDatasource);
|
|
|
|
ClientDataSourceRouter clientRoutingDatasource = new ClientDataSourceRouter();
|
|
clientRoutingDatasource.setTargetDataSources(targetDataSources);
|
|
clientRoutingDatasource.setDefaultTargetDataSource(clientADatasource);
|
|
return clientRoutingDatasource;
|
|
}
|
|
|
|
private DataSource clientADatasource() {
|
|
EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder();
|
|
EmbeddedDatabase embeddedDb = dbBuilder.setType(EmbeddedDatabaseType.H2)
|
|
.setName("CLIENT_A")
|
|
.addScript("classpath:dsrouting-db.sql")
|
|
.build();
|
|
return embeddedDb;
|
|
}
|
|
|
|
private DataSource clientBDatasource() {
|
|
EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder();
|
|
EmbeddedDatabase embeddedDb = dbBuilder.setType(EmbeddedDatabaseType.H2)
|
|
.setName("CLIENT_B")
|
|
.addScript("classpath:dsrouting-db.sql")
|
|
.build();
|
|
return embeddedDb;
|
|
}
|
|
}
|