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.