En BeanPostProcessor
kommer att bearbeta alla bönor i ApplicationContext
och på så sätt kan du lägga till ytterligare konfiguration eller ersätta den helt om du vill.
Du kan skapa en BeanPostProcessor
som skulle lägga till egenskaperna till den konfigurerade DataSource
. Exemplet nedan förutsätter användningen av commons-dbcp
1 eller 2 om du använder en annan DataSource
ändra i enlighet med detta.
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 lägga till detta i din konfiguration och det kommer att lägga till egenskaperna till Datakälla
bönor.
@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 borde göra susen för att konfigurera datakällan.