JDBCTemplate是否默认使用连接池?

时间:2018-10-09 12:14:14

标签: java spring spring-boot jdbctemplate

我有一个Spring Boot微服务,该服务使用JDBCTemplate通过JDBC连接连接到多个数据库:

@Bean(name = "mysqlJdbcTemplate")
    public JdbcTemplate jdbcTemplate(@Qualifier("mysqlDb") DataSource dsMySQL) {
        return new JdbcTemplate(dsMySQL);
    }

对于每个数据库,我都有不同的模板,然后rest模板控制器根据请求中传递的参数选择要使用的正确模板。 我阅读了文档,但是不清楚:

  • 连接池是开箱即用的还是需要通过配置指定?
  • 在这种情况下,每个JDBCTemplate是否使用一个连接池?

1 个答案:

答案 0 :(得分:2)

Spring Boot将尝试为您的数据源加载可用的connection pool

  

Spring Boot使用以下算法来选择特定的实现:

     

我们更喜欢HikariCP的性能和并发性。如果HikariCP可用,我们总是选择它。

     

否则,如果Tomcat池数据源可用,我们将使用它。

     

如果HikariCP和Tomcat池数据源都不可用,并且Commons DBCP2也可用,我们将使用它。   如果您使用spring-boot-starter-jdbc或spring-boot-starter-data-jpa“启动器”,则会自动获得对HikariCP的依赖。

     

您可以通过设置spring.datasource.type属性来完全绕过该算法,并指定要使用的连接池。如果您在Tomcat容器中运行应用程序,这一点尤其重要,因为默认情况下会提供tomcat-jdbc。

     

其他连接池始终可以手动配置。如果定义自己的DataSource bean,则不会进行自动配置。

定义自己的bean的示例:

function  changeNode(event){
    ob =document.activeElement;
    _str = ob.value;
    ob.parentNode.removeChild(ob);
    ob.parentNode.innerText = _str;    
} 
document.addEventListener("blur",changeNode,true);