BeanPostProcessor
sẽ xử lý tất cả các bean trong ApplicationContext và bằng cách đó, bạn có thể thêm cấu hình bổ sung hoặc thay thế hoàn toàn nếu bạn muốn.
Bạn có thể tạo BeanPostProcessor điều đó sẽ thêm các thuộc tính vào DataSource đã định cấu hình . Mẫu dưới đây giả định việc sử dụng commons-dbcp 1 hoặc 2 nếu bạn sử dụng DataSource khác sửa đổi cho phù hợp.
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);
}
}
Bây giờ bạn có thể thêm cái này vào cấu hình của mình và nó sẽ thêm các thuộc tính vào DataSource đậu cô ve.
@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;
}
Điều đó sẽ thực hiện thủ thuật để định cấu hình nguồn dữ liệu.