BeanPostProcessor
akan memproses semua kacang di ApplicationContext dan dengan cara itu Anda dapat menambahkan konfigurasi tambahan atau menggantinya sepenuhnya jika Anda mau.
Anda dapat membuat BeanPostProcessor yang akan menambahkan properti ke DataSource yang dikonfigurasi . Contoh di bawah ini mengasumsikan penggunaan commons-dbcp 1 atau 2 jika Anda menggunakan DataSource yang berbeda memodifikasi sesuai.
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);
}
}
Sekarang Anda dapat menambahkan ini ke konfigurasi Anda dan itu akan menambahkan properti ke DataSource kacang polong.
@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;
}
Itu harus melakukan trik untuk mengonfigurasi sumber data.