Un BeanPostProcessor
traitera tous les beans dans le ApplicationContext
et de cette façon, vous pouvez ajouter une configuration supplémentaire ou la remplacer totalement si vous le souhaitez.
Vous pouvez créer un BeanPostProcessor
qui ajouterait les propriétés au DataSource
configuré . L'exemple ci-dessous suppose l'utilisation de commons-dbcp
1 ou 2 si vous utilisez un DataSource
différent modifier en conséquence.
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);
}
}
Vous pouvez maintenant l'ajouter à votre configuration et il ajoutera les propriétés à DataSource
des haricots.
@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;
}
Cela devrait faire l'affaire pour configurer la source de données.