En BeanPostProcessor
vil behandle alle bønnerne i ApplicationContext
og på den måde kan du tilføje yderligere konfiguration eller erstatte den helt, hvis du ønsker det.
Du kan oprette en BeanPostProcessor
som ville tilføje egenskaberne til den konfigurerede DataSource
. Eksemplet nedenfor antager brugen af commons-dbcp
1 eller 2, hvis du bruger en anden DataSource
ændre i overensstemmelse hermed.
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);
}
}
Nu kan du tilføje dette til din konfiguration, og det vil tilføje egenskaberne til DataSource
bønner.
@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;
}
Det burde gøre det trick for at konfigurere datakilden.