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.