Introduce initialize() in AbstractRouting[DataSource|ConnectionFactory]

This commit introduces initialize() methods in
AbstractRoutingDataSource and AbstractRoutingConnectionFactory as an
alternative to invoking afterPropertiesSet().

Closes gh-31248
This commit is contained in:
Lee Jaeheon
2023-09-16 23:26:56 +09:00
committed by Sam Brannen
parent af0b39a722
commit 6d2d8a36c2
4 changed files with 55 additions and 0 deletions

View File

@@ -146,6 +146,31 @@ class AbstractRoutingDataSourceTests {
assertThat(routingDataSource.determineTargetDataSource()).isSameAs(ds);
}
@Test
void testInitialize_synchronizeTargetDataSourcesToResolvedDataSources() {
AbstractRoutingDataSource routingDataSource = new AbstractRoutingDataSource() {
@Override
protected Object determineCurrentLookupKey() {
return null;
}
};
DataSource ds1 = new StubDataSource();
DataSource ds2 = new StubDataSource();
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put("ds1", ds1);
targetDataSources.put("ds2", ds2);
routingDataSource.setTargetDataSources(targetDataSources);
routingDataSource.initialize();
Map<Object, DataSource> resolvedDataSources = routingDataSource.getResolvedDataSources();
assertThat(resolvedDataSources).hasSize(2);
assertThat(resolvedDataSources.get("ds1")).isSameAs(ds1);
assertThat(resolvedDataSources.get("ds2")).isSameAs(ds2);
}
@Test
public void notInitialized() {
AbstractRoutingDataSource routingDataSource = new AbstractRoutingDataSource() {