程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用默认的Tomcat连接池在Spring Boot 1.3.x中的DataSource上设置自定义连接属性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用默认的tomcat连接池在Spring Boot 1.3.x中的Datasource上设置自定义连接属性?

开发过程中遇到如何使用默认的tomcat连接池在Spring Boot 1.3.x中的Datasource上设置自定义连接属性的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用默认的tomcat连接池在Spring Boot 1.3.x中的Datasource上设置自定义连接属性的解决方法建议,希望对你解决如何使用默认的tomcat连接池在Spring Boot 1.3.x中的Datasource上设置自定义连接属性有所启发或帮助;

设置池的connectionPropertIEs应该起作用。这些将被传递给JDBC驱动程序。将此添加到application.propertIEs:

spring.datasource.connectionPropertIEs: defaultRowPrefetch=1000;defaultBatchValue=1000

编辑(一些背景信息):

还要注意,您可以通过spring.datasource。*配置任何特定于Datasource实现的属性:有关更多详细信息,请参阅所用连接池实现的文档。

解决方法

我需要设置一些特定的Oracle JDBC连接属性,以加快批处理INSERT(defaultBatchValue)和批量处理SELECT(defaultRowPrefetch)。我收到了有关如何使用DBCP实现此建议(感谢m. Deinum),但我想:

  • 保留默认的tomcat jdbc连接池
  • 保留application.yml@R_675_10521@

我正在spring.datasource.custom_connection_properties将来要支持或类似功能的功能请求,因此试图装扮成这样,这已经成为可能。我通过在创建数据源时传递相关信息来做到这一点,并像这样操纵数据源的创建:

@Bean
public Datasource datasource() {
    Datasource ds = null;

    try {
        Field props = DatasourceBuilder.class.getDeclaredField("properties");
        props.setAccessible(true);
        DatasourceBuilder builder = DatasourceBuilder.create();
        Map<String,String> properties = (Map<String,String>) props.get(builder);

        properties.put("defaultRowPrefetch","1000");
        properties.put("defaultBatchValue","1000");

        ds = builder.url( "jdbc:Oracle:thin:@xyz:1521:abc" ).username( "ihave" ).password( "wonttell" ).build();

        properties = (Map<String,String>) props.get(builder);

        log.debug("properties after: {}",properties);
    } ... leaving out the catches ...
    }
    log.debug("We are using this datasource: {}",ds);
    return ds;
}

在日志中,我可以看到我正在创建正确的数据源:

2016-01-18 14:40:32.924 DEBUG 31204 --- [           main] d.a.e.a.c.config.DatabaseConfiguration   : We are using this datasource: org.apache.tomcat.jdbc.pool.Datasource@19f040ba{ConnectionPool[defaultAutoCommit=null; ...

2016-01-18 14:40:32.919 DEBUG 31204 --- [           main] d.a.e.a.c.config.DatabaseConfiguration   : properties after: {password=wonttell,driverClassName=Oracle.jdbc.OracleDriver,defaultRowPrefetch=1000,defaultBatchValue=1000,url=jdbc:Oracle:thin:@xyz:1521:abc,username=ihavE}

执行器显示我的代码替换了数据源:

但是设置未激活,我在分析应用程序时可以看到这些设置。在defaultRowPrefetch仍处于10这将导致SELECT使他能远远低于他们是,如果1000被激活。

@H_696_50@@H_696_50@
@H_696_50@

大佬总结

以上是大佬教程为你收集整理的如何使用默认的Tomcat连接池在Spring Boot 1.3.x中的DataSource上设置自定义连接属性全部内容,希望文章能够帮你解决如何使用默认的Tomcat连接池在Spring Boot 1.3.x中的DataSource上设置自定义连接属性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。