Oracle
 sql >> Base de données >  >> RDS >> Oracle

Optimisation de la taille de récupération JDBC à l'aide de Spring Boots application.properties

Un BeanPostProcessor traitera tous les beans dans le ApplicationContext et de cette façon, vous pouvez ajouter une configuration supplémentaire ou la remplacer totalement si vous le souhaitez.

Vous pouvez créer un BeanPostProcessor qui ajouterait les propriétés au DataSource configuré . L'exemple ci-dessous suppose l'utilisation de commons-dbcp 1 ou 2 si vous utilisez un DataSource différent modifier en conséquence.

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

Vous pouvez maintenant l'ajouter à votre configuration et il ajoutera les propriétés à DataSource des haricots.

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

Cela devrait faire l'affaire pour configurer la source de données.