Ein BeanPostProcessor
verarbeitet alle Beans im ApplicationContext
Auf diese Weise können Sie zusätzliche Konfigurationen hinzufügen oder sie vollständig ersetzen, wenn Sie möchten.
Sie könnten einen BeanPostProcessor
erstellen das würde die Eigenschaften der konfigurierten DataSource
hinzufügen . Das folgende Beispiel geht von der Verwendung von commons-dbcp
aus 1 oder 2, wenn Sie eine andere DataSource
verwenden entsprechend ändern.
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);
}
}
Jetzt können Sie dies zu Ihrer Konfiguration hinzufügen und es werden die Eigenschaften zu DataSource
hinzugefügt Bohnen.
@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;
}
Das sollte ausreichen, um die Datenquelle zu konfigurieren.