我依靠Spring Boot使用标准配置属性(spring.datasource.*)自动配置DB2数据源。
重点是我需要在数据源中设置一个自定义的DB2配置属性。如果我手动将数据源创建为bean,我将使用DB2SimpleDataSource类型的@Bean来定义它,并调用该类提供的setter方法来设置值:
DB2SimpleDataSource db2DS = new DB2SimpleDataSource();
db2DS.setClientDebugInfo("xxx");有没有办法继续使用自动配置,同时能够配置该属性?
发布于 2019-01-30 21:28:51
我解决了这个问题,添加了一个这样的BeanPostProcessor:
@Configuration
@ConditionalOnClass(name = Constants.DB2_PRESENCE_TOKEN_CLASS)
@AutoConfigureAfter(value = {
DataSourceAutoConfiguration.class})
@Slf4j
public class Db2CustomPropertiesAutoConfiguration implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
log.debug("bean {}", bean);
if (bean instanceof DataSourceProxy && ((DataSource) bean).getDriverClassName().equals("com.ibm.db2.jcc.DB2Driver")) {
((DataSource) bean).getDbProperties().put("clientDebugInfo", "XXX")
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
}https://stackoverflow.com/questions/54426112
复制相似问题