JPA is not used. project structure: each database has its own class-configurator.
file application.properties is
app.datasource.h2.jdbc-url=jdbc:h2:~/database/tester
app.datasource.h2.username=usr
app.datasource.h2.password=pwd
app.datasource.pg.jdbc-url=jdbc:postgresql://localhost:5432/tester
app.datasource.pg.username=usr
app.datasource.pg.password=pwd
config db H2 is DataSourcesConfigurationH2:
@Configuration
@EnableTransactionManagement
public class DataSourcesConfigurationH2 {
@Bean
@Primary
@ConfigurationProperties(prefix="app.datasource.h2")
public HikariDataSource dataSourceH2(DataSourceProperties dataSourceProperties) {
return dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
@Bean
@Primary
public NamedParameterJdbcTemplate jdbcH2(HikariDataSource dataSource) {
return new NamedParameterJdbcTemplate(dataSource);
}
@Bean
@Primary
TransactionManager transactionManagerH2(HikariDataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
config db postgres is DataSourcesConfigurationPg:
@Configuration
@EnableTransactionManagement
public class DataSourcesConfigurationPg {
@Bean
@ConfigurationProperties(prefix="app.datasource.pg")
public HikariDataSource dataSourcePg(DataSourceProperties dataSourceProperties) {
return dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
@Bean
public NamedParameterJdbcTemplate jdbcPg(HikariDataSource dataSource) {
return new NamedParameterJdbcTemplate(dataSource);
}
@Bean
TransactionManager transactionManagerPg(HikariDataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
however, when the application starts, the dataSourcePg value is not initialized.
dataSourceH2.getDriverClassName() is "org.h2.Driver"
and
dataSourcePg.getDriverClassName() is "org.h2.Driver"
how to initialize the value of dataSourcePg correctly ?