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 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; } }