BeanPostProcessor
ще обработи всички зърна в ApplicationContext
и по този начин можете да добавите допълнителна конфигурация или да я замените напълно, ако желаете.
Можете да създадете BeanPostProcessor
което ще добави свойствата към конфигурирания DataSource
. Примерът по-долу предполага използването на commons-dbcp
1 или 2, ако използвате различен DataSource
модифицирайте съответно.
public class DataSourceConfiguringBeanPostProcessor implements BeanPostProcessor {
private final Map<String,String> properties = new HashMap<>;
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instance BasicDataSource ) {
for (Map.Entry<String, String> prop : properties.entrySet()) {
((BasicDataSource) bean).addConnectionProperty(prop.getKey(), prop.getValue());
}
}
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
public void setProperties(Map<String, String> properties) {
this.properties.putAll(properties);
}
}
Сега можете да добавите това към вашата конфигурация и то ще добави свойствата към DataSource
боб.
@Bean
public BeanPostProcessor dataSourcePostProcessor() {
DataSourceConfiguringBeanPostProcessor processor = new DataSourceConfiguringBeanPostProcessor();
Map<String, String> properties = new HashMap<>();
properties.put("defaultRowPrefetch", "15");
properties.put("defaultBatchValue", "25");
processor.setProperties(properties);
return processor;
}
Това трябва да свърши работа за конфигуриране на източника на данни.