sql >> Base de Datos >  >> RDS >> Oracle

Optimización del tamaño de recuperación de JDBC mediante el uso de Spring Boots application.properties

Un BeanPostProcessor procesará todos los beans en el ApplicationContext y de esa manera puede agregar configuración adicional o reemplazarla por completo si lo desea.

Podrías crear un BeanPostProcessor que agregaría las propiedades al DataSource configurado . El siguiente ejemplo asume el uso de commons-dbcp 1 o 2 si usa un DataSource diferente modificar en consecuencia.

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);
    }
}

Ahora puede agregar esto a su configuración y agregará las propiedades a DataSource frijoles.

@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;
}

Eso debería hacer el truco para configurar la fuente de datos.