У меня есть класс OracleConfiguration, в котором определены DataSource и Jdbctemplate. Ниже приведен фрагмент кода
@Configuration
//@ConfigurationProperties("oracle")
@PropertySource("classpath:dev.properties")
public class OracleConfiguration {
//omitted variable names,getters n setter for brevity
DataSource dataSource() throws SQLException {
OracleDataSource dataSource = new OracleDataSource();
dataSource.setDriverType(driverType);
dataSource.setUser(username);
dataSource.setPassword(password);
dataSource.setURL(url);
dataSource.setImplicitCachingEnabled(true);
dataSource.setFastConnectionFailoverEnabled(true);
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.setResultsMapCaseInsensitive(true);
return jdbcTemplate;
}
Теперь для подключения к базе данных в каждом репозитории я создаю один экземпляр JdbcTemplate и аннотирую его с помощью Autowire, которыйработает нормально.
@Component
public class RolesDaoImpl implements RolesDao {
@Autowired
private JdbcTemplate jdbcTemplate;
// works fine able to perform jdbc operations
Но я читал, что для каждой схемы базы данных должен быть только один экземпляр JdbcTemplate. Как я могу сделать этот код JdbcTemplate универсальным. Я попробовал следующее, но не могу подключиться к Dbиспользуя приведенную ниже технику
public class JdcTemplateDaoImpl {
private JdbcTemplate jdbcTemplate; //SETTER NOT REQUIRED
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setDataSource ( DataSource dataSource )
{
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
И каждый мой DaoImpl может расширить этот JdcTemplateDaoImpl. Как мне этого добиться?