I have convert my application context XML which define the DB connection to beans
But application context fails to start
java.lang.NullPointerException: null
at net.ttddyy.dsproxy.support.ProxyDataSource.getConnection(ProxyDataSource.java:63)
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:418)
My Config Class
@Configuration
@Order(1)
@Primary
public class OLTPHikariDatasourceConfig {
private static final String NATIVE = "native";
Creating Bean HikariConfig
@Bean(name = "hikariConfigDataSource")
public HikariConfig dataSource(@Value("${jdbc.url}") String jdbcUrl,
@Value("${jdbc.username}") String userName,
@Value("${jdbc.password}") String jdbcPassword,
@Value("${jdbc.connection.type:native}") String jdbcConnectionType,
@Value("${oltp.auto.commit:true}") boolean autoCommit,
@Value("${c3p0.connections.min}") int minIdle,
@Value("${c3p0.connections.max}") int maxIdle
){
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("org.postgresql.Driver");
hikariConfig.setJdbcUrl(jdbcUrl);
hikariConfig.setUsername(userName);
if(NATIVE.equals(jdbcConnectionType)) {
hikariConfig.setPassword(jdbcPassword);
} else {
}
hikariConfig.setPoolName("OLTP");
hikariConfig.setMaximumPoolSize(maxIdle);
hikariConfig.setMinimumIdle(minIdle);
hikariConfig.setRegisterMbeans(true);
hikariConfig.setAutoCommit(autoCommit);
hikariConfig.setDataSourceProperties(getDataSourceProperties());
HikariDataSource dataSource = new HikariDataSource(hikariConfig);
return dataSource;
}
private Properties getDataSourceProperties(){
Properties properties = new Properties();
properties.setProperty("characterEncoding", "UTF-8");
properties.setProperty("useUnicode", "yes");
properties.setProperty("rewriteBatchedStatements", "true");
return properties;
}
Creating Bean HikariDataSource
@Primary
@Bean(name = "dataSourceBase", destroyMethod = "close")
public HikariDataSource hikarDataSource(HikariConfig hikariConfigDataSource){
HikariDataSource hikariDataSource = new HikariDataSource(hikariConfigDataSource);
return hikariDataSource;
}
Creating Bean DBAccessListener
@Bean(name = "dbAccessListener")
public DBAccessListener DBAccessListener(DatoFeatureFlagService datoFeatureFlagService) {
DBAccessListener dbAccessListener = new DBAccessListener(datoFeatureFlagService);
return dbAccessListener;
}
Creating Bean ChainListener
@Bean(name = "queryListener")
public ChainListener queryListener(DBAccessListener dbAccessListener) {
ChainListener queryListener = new ChainListener();
queryListener.addListener(dbAccessListener);
return queryListener;
}
Creating Bean ProxyConfigSpringXmlSupport
@Bean(name = "proxyConfigSupport")
public ProxyConfigSpringXmlSupport proxyDataSourceSupport(ChainListener queryListener) {
ProxyConfigSpringXmlSupport proxyConfigSpringXmlSupport = new ProxyConfigSpringXmlSupport();
proxyConfigSpringXmlSupport.setDataSourceName("dataSourceDefaultName");
proxyConfigSpringXmlSupport.setQueryListener(queryListener);
return proxyConfigSpringXmlSupport;
}
Creating Bean ProxyConfig
@Bean(name = "proxyConfig")
public ProxyConfig proxyConfig(ProxyConfigSpringXmlSupport proxyConfigSpringXmlSupport) {
return proxyConfigSpringXmlSupport.create();
}
@Bean(name = "dataSource")
public ProxyDataSource proxyDataSource(HikariDataSource hikariDataSource, ProxyConfig proxyConfig){
ProxyDataSource proxyDataSource = new ProxyDataSource();
proxyDataSource.setDataSource(hikariDataSource);
proxyDataSource.setProxyConfig(proxyConfig);
return proxyDataSource;
}
@Bean(name = "jdbcTemplate")
public JdbcTemplate proxyDataSource(ProxyDataSource proxyDataSource){
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(proxyDataSource);
return jdbcTemplate;
}
}
In debug connection not appear as NULL
