精华内容
下载资源
问答
  • springboot数据库连接池
    千次阅读
    2021-04-07 15:33:08

    使用springboot 线程池连接MySQL时,mysql数据库wait_timeout 为8个小时,所以程序第二天发现报错,在url配置了 autoReconnect=true 也不行,这个异常通常在Linux服务器上会发生,原因是Linux系统会主动断开一个长时间没有通信的连接

    问题在于数据库连接池长时间处于间歇状态,导致Linux系统将其断开了,然后抛出了这个错误。

    要想解决这个问题,就要主动让我们的连接池保持连接,不被断开。处理方式很简单,只需要加入相关配置即可。

    打开application.properties文件,加入下面配置:

    spring.datasource.testOnBorrow=true

    spring.datasource.validationQuery=SELECT 1

    第一句的意思是:自动重连

    第二句的意思是:验证连接的sql语句

    更多相关内容
  • 基本目录结构及使用1.1 如果不用Spring Initializr2.java配置,以数据库连接池为例2.1 Spring Boot的属性注入更优雅的注入 1. 基本目录结构及使用 创建一个springboot工程 在项目中引入springMVC相关依赖 目录...

    SpringBoot连接池
    https://www.cnblogs.com/756623607-zhang/p/9453394.html

    1. 基本目录结构及使用

    创建一个springboot工程
    在这里插入图片描述在这里插入图片描述
    在项目中引入springMVC相关依赖
    在这里插入图片描述
    目录结构
    在这里插入图片描述
    mvnw是什么:https://www.cnblogs.com/easonjim/p/7620085.html

    个人开发一些文件可以去掉。
    在这里插入图片描述
    入口类已自动创建好,可直接运行。
    在这里插入图片描述
    加个controller测试下效果。

    @RestController
    public class TestController {
        @GetMapping("hello")
        public String hello(){
            return "hello, spring boot!";
        }
    }
    

    在这里插入图片描述
    启动成功,访问http://localhost:8080/hello,可看到输出。
    在这里插入图片描述

    1.1 如果不用Spring Initializr

    https://docs.spring.io/springboot/docs/2.2.7.RELEASE/reference/html/getting-started.html#getting-started

    正常spring创建工程,在pom中添加依赖
    指定boot版本

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.7.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
    </parent>
    

    添加SpringWeb起步依赖,不写版本号是因为parent中已指定。

     <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
    

    创建入口类,boot会扫描当前包及子包,所以最好在外层包内。

    @SpringBootApplication
    public class MydemoApplication {
        public static void main(String[] args) {
            SpringApplication.run(MydemoApplication.class, args);
        }
    
    }
    

    Resource下创建application.properties的配置文件

    2.java配置,以数据库连接池为例

    mysql8

    1. 一般配置流程:
      1. 创建jdbc.properties
      2. 创建JdbcConfig类

    @Configuration :声明一个类作为配置类,代替xml文件
    @Bean :声明在方法上,将方法的返回值加入Bean容器,代替 标签
    @Value :属性注入
    @PropertySource :指定外部属性文件,

    pom中添加

     <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.6</version>
     </dependency>
    

    JdbcConfig类

    @Configuration
    @PropertySource("classpath:jdbc.properties")
    public class JdbcConfig {
        @Value("${jdbc.url}")
        String url;
        @Value("${jdbc.driver}")
        String driverClassName;
        @Value("${jdbc.username}")
        String username;
        @Value("${jdbc.password}")
        String password;
        @Value("${jdbc.initialSize}")
        int initialSize;
        @Value("${jdbc.maxActive}")
        int maxActive;
    
        @Bean
        public DruidDataSource dataSource(){
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setDriverClassName(driverClassName);
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            dataSource.setInitialSize(initialSize);
            dataSource.setMaxActive(maxActive);
            return dataSource;
        }
    }
    

    jdbc.properties配置文件

    jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
    jdbc.username=root
    jdbc.password=root
    jdbc.initialSize=1
    jdbc.maxActive=5
    

    修改TestController测试

    @RestController
    public class TestController {
        @Autowired
        private DruidDataSource dataSource;
        @GetMapping("hello")
        public String hello(){
            System.out.println("dataSource = " + dataSource);
            return "hello, spring boot!";
        }
    }
    

    我的成功运行。

    2.1 Spring Boot的属性注入

    默认的配置文件名必须是:application.properties或application.yml
    properties和yml的格式有点不同,注意

    1. 把jdbc.properties改为application.properties

    2. 新建配置类

    @ConfigurationProperties(prefix = "jdbc")
    public class JdbcProperties {
        private String url;
        private String driver;
        private String username;
        private String password;
        private int initialSize;
        private int maxActive;
        //还有get,set等方法省略了,注意加上
    }
    
    1. 修改JdbcConfig
    @Configuration
    @EnableConfigurationProperties(JdbcProperties.class)
    public class JdbcConfig {
        @Bean
        public DruidDataSource dataSource(JdbcProperties jdbc) {
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setUrl(jdbc.getUrl());
            dataSource.setDriverClassName(jdbc.getDriver());
            dataSource.setUsername(jdbc.getUsername());
            dataSource.setPassword(jdbc.getPassword());
            dataSource.setInitialSize(jdbc.getInitialSize());
            dataSource.setMaxActive(jdbc.getMaxActive());
            return dataSource;
        }
    }
    

    更优雅的注入

    场景:一段属性只有一个Bean需要使用

    只需JdbcConfig ,和application.properties即可

    1. application.properties
    jdbc.driverClassName=com.mysql.cj.jdbc.Driver       
    jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
    jdbc.username=root
    jdbc.password=root
    jdbc.initialSize=1
    jdbc.maxActive=5
    
    1. JdbcConfig
    @Configuration
    public class JdbcConfig {
        @Bean
    // 声明要注入的属性前缀,Spring Boot会自动把相关属性通过set方法注入到DataSource中
        @ConfigurationProperties(prefix = "jdbc")
        public DruidDataSource dataSource() {
            return new DruidDataSource();
        }
    }
    
    展开全文
  • SpringBoot数据库连接池常用配置

    千次阅读 2022-04-12 17:18:16
    spring.datasource.init-sql当连接创建时,执行的sql spring.datasource.initial-size指定启动连接池时,初始建立的连接数量 spring.datasource.initialization-fail-fast当创建连接池时,没法创建指定最小连接数量...

    在配置文件中添加配置如下(我使用的是多数据源):

    spring.datasource.primary.url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=utf-8

    spring.datasource.primary.username=test

    spring.datasource.primary.password=123456

    spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver

    验证连接的有效性

    spring.datasource.primary.test-while-idle=true

    获取连接时候验证,会影响性能

    spring.datasource.primary.test-on-borrow=false

    在连接归还到连接池时是否测试该连接

    spring.datasource.primary.test-on-return=false

    spring.datasource.primary.validation-query=SELECT 1 FROM DUAL

    空闲连接回收的时间间隔,与test-while-idle一起使用,设置5分钟

    spring.datasource.primary.time-between-eviction-runs-millis=300000

    连接池空闲连接的有效时间 ,设置30分钟

    spring.datasource.primary.min-evictable-idle-time-millis=1800000

    spring.datasource.primary.initial-size=5

    指定连接池中最大的活跃连接数.

    spring.datasource.primary.max-active=50

    指定连接池等待连接返回的最大等待时间,毫秒单位.

    spring.datasource.primary.max-wait=60000

    指定必须保持连接的最小值

    spring.datasource.primary.min-idle=5

    spring.datasource.secondary.url=jdbc\:mysql\://localhost\:3306/test2?useUnicode\=true&characterEncoding\=utf-8

    spring.datasource.secondary.username=test

    spring.datasource.secondary.password=123456

    spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver

    验证连接的有效性

    spring.datasource.secondary.test-while-idle=true

    获取连接时候验证,会影响性能

    spring.datasource.secondary.test-on-borrow=false

    在连接归还到连接池时是否测试该连接

    spring.datasource.secondary.test-on-return=false

    spring.datasource.secondary.validation-query=SELECT 1 FROM DUAL

    空闲连接回收的时间间隔,与test-while-idle一起使用,设置5分钟

    spring.datasource.secondary.time-between-eviction-runs-millis=300000

    连接池空闲连接的有效时间 ,设置30分钟

    spring.datasource.secondary.min-evictable-idle-time-millis=1800000

    spring.datasource.secondary.initial-size=5

    指定连接池中最大的活跃连接数.

    spring.datasource.secondary.max-active=50

    指定连接池等待连接返回的最大等待时间,毫秒单位.

    spring.datasource.secondary.max-wait=60000

    指定必须保持连接的最小值

    spring.datasource.secondary.min-idle=5

    datasource

    spring.dao.exceptiontranslation.enabled是否开启PersistenceExceptionTranslationPostProcessor,默认为true

    spring.datasource.abandon-when-percentage-full设定超时被废弃的连接占到多少比例时要被关闭或上报

    spring.datasource.allow-pool-suspension使用Hikari pool时,是否允许连接池暂停,默认为: false

    spring.datasource.alternate-username-allowed是否允许替代的用户名.

    spring.datasource.auto-commit指定updates是否自动提交.

    spring.datasource.catalog指定默认的catalog.

    spring.datasource.commit-on-return设置当连接被归还时,是否要提交所有还未完成的事务

    spring.datasource.connection-init-sql指定连接被创建,再被添加到连接池之前执行的sql.

    spring.datasource.connection-init-sqls使用DBCP connection pool时,指定初始化时要执行的sql

    spring.datasource.connection-properties.[key]在使用DBCP connection pool时指定要配置的属性

    spring.datasource.connection-test-query指定校验连接合法性执行的sql语句

    spring.datasource.connection-timeout指定连接的超时时间,毫秒单位.

    spring.datasource.continue-on-error在初始化数据库时,遇到错误是否继续,默认false

    spring.datasource.data指定Data (DML)脚本

    spring.datasource.data-source-class-name指定数据源的全限定名.

    spring.datasource.data-source-jndi指定jndi的地址

    spring.datasource.data-source-properties.[key]使用Hikari connection pool时,指定要设置的属性

    spring.datasource.db-properties使用Tomcat connection pool,指定要设置的属性

    spring.datasource.default-auto-commit是否自动提交.

    spring.datasource.default-catalog指定连接默认的catalog.

    spring.datasource.default-read-only是否设置默认连接只读.

    spring.datasource.default-transaction-isolation指定连接的事务的默认隔离级别.

    spring.datasource.driver-class-name指定driver的类名,默认从jdbc url中自动探测.

    spring.datasource.fair-queue是否采用FIFO返回连接.

    spring.datasource.health-check-properties.[key]使用Hikari connection pool时,在心跳检查时传递的属性

    spring.datasource.idle-timeout指定连接多久没被使用时,被设置为空闲,默认为10ms

    spring.datasource.ignore-exception-on-pre-load当初始化连接池时,是否忽略异常.

    spring.datasource.init-sql当连接创建时,执行的sql

    spring.datasource.initial-size指定启动连接池时,初始建立的连接数量

    spring.datasource.initialization-fail-fast当创建连接池时,没法创建指定最小连接数量是否抛异常

    spring.datasource.initialize指定初始化数据源,是否用data.sql来初始化,默认: true

    spring.datasource.isolate-internal-queries指定内部查询是否要被隔离,默认为false

    spring.datasource.jdbc-interceptors使用Tomcat connection pool时,指定jdbc拦截器,分号分隔

    spring.datasource.jdbc-url指定JDBC URL.

    spring.datasource.jmx-enabled是否开启JMX,默认为: false

    spring.datasource.jndi-name指定jndi的名称.

    spring.datasource.leak-detection-threshold使用Hikari connection pool时,多少毫秒检测一次连接泄露.

    spring.datasource.log-abandoned使用DBCP connection pool,是否追踪废弃statement或连接,默认为: false

    spring.datasource.log-validation-errors当使用Tomcat connection pool是否打印校验错误.

    spring.datasource.login-timeout指定连接数据库的超时时间.

    spring.datasource.max-active指定连接池中最大的活跃连接数.

    spring.datasource.max-age指定连接池中连接的最大年龄

    spring.datasource.max-idle指定连接池最大的空闲连接数量.

    spring.datasource.max-lifetime指定连接池中连接的最大生存时间,毫秒单位.

    spring.datasource.max-open-prepared-statements指定最大的打开的prepared statements数量.

    spring.datasource.max-wait指定连接池等待连接返回的最大等待时间,毫秒单位.

    spring.datasource.maximum-pool-size指定连接池最大的连接数,包括使用中的和空闲的连接.

    spring.datasource.min-evictable-idle-time-millis指定一个空闲连接最少空闲多久后可被清除.

    spring.datasource.min-idle指定必须保持连接的最小值(For DBCP and Tomcat connection pools)

    spring.datasource.minimum-idle指定连接维护的最小空闲连接数,当使用HikariCP时指定.

    spring.datasource.name指定数据源名.

    spring.datasource.num-tests-per-eviction-run指定运行每个idle object evictor线程时的对象数量

    spring.datasource.password指定数据库密码.

    spring.datasource.platform指定schema要使用的Platform(schema-${platform}.sql),默认为: all

    spring.datasource.pool-name指定连接池名字.

    spring.datasource.pool-prepared-statements指定是否池化statements.

    spring.datasource.propagate-interrupt-state在等待连接时,如果线程被中断,是否传播中断状态.

    spring.datasource.read-only当使用Hikari connection pool时,是否标记数据源只读

    spring.datasource.register-mbeans指定Hikari connection pool是否注册JMX MBeans.

    spring.datasource.remove-abandoned指定当连接超过废弃超时时间时,是否立刻删除该连接.

    spring.datasource.remove-abandoned-timeout指定连接应该被废弃的时间.

    spring.datasource.rollback-on-return在归还连接时,是否回滚等待中的事务.

    spring.datasource.schema指定Schema (DDL)脚本.

    spring.datasource.separator指定初始化脚本的语句分隔符,默认: ;

    spring.datasource.sql-script-encoding指定SQL scripts编码.

    spring.datasource.suspect-timeout指定打印废弃连接前的超时时间.

    spring.datasource.test-on-borrow当从连接池借用连接时,是否测试该连接.

    spring.datasource.test-on-connect创建时,是否测试连接

    spring.datasource.test-on-return在连接归还到连接池时是否测试该连接.

    spring.datasource.test-while-idle当连接空闲时,是否执行连接测试.

    spring.datasource.time-between-eviction-runs-millis指定空闲连接检查、废弃连接清理、空闲连接池大小调整之间的操作时间间隔

    spring.datasource.transaction-isolation指定事务隔离级别,使用Hikari connection pool时指定

    spring.datasource.url指定JDBC URL.

    spring.datasource.use-disposable-connection-facade是否对连接进行包装,防止连接关闭之后被使用.

    spring.datasource.use-equals比较方法名时是否使用String.equals()替换==.

    spring.datasource.use-lock是否对连接操作加锁

    spring.datasource.username指定数据库名.

    spring.datasource.validation-interval指定多少ms执行一次连接校验.

    spring.datasource.validation-query指定获取连接时连接校验的sql查询语句.

    spring.datasource.validation-query-timeout指定连接校验查询的超时时间.

    spring.datasource.validation-timeout设定连接校验的超时时间,当使用Hikari connection pool时指定

    spring.datasource.validator-class-name用来测试查询的validator全限定名.

    spring.datasource.xa.data-source-class-name指定数据源的全限定名.

    spring.datasource.xa.properties指定传递给XA data source的属性

    展开全文
  • 1.数据库连接池的种类 DBCP 可设置最大最小连接数、以及超时时间等常用的配置。不过稳定性一般,速度较慢,在高并发的情况下性能有所下降,并且不提供连接池监控。 C3P0 基本的设置都具备,连接池的持续运行的稳定...

    1.数据库连接池的种类

    1. DBCP 可设置最大最小连接数、以及超时时间等常用的配置。不过稳定性一般,速度较慢,在高并发的情况下性能有所下降,并且不提供连接池监控。
    2. C3P0 基本的设置都具备,连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,此外不提供连接池监控。
    3. Druid 速度与C3P0差不多,并且具备监控功能(比如每条sql执行时间、并发数、读取行数等),阿里的开源连接池
    4. HikariCP 速度最快,并且springboot默认支持

     

    2.springBoot整合mybatis

    首先在application.yml中配置xml存放的路径

     

    mybatis:
      mapper-locations: classpath:mapping/*Mapper.xml

     

    xml映射接口上加注解

    @Mapper
    //@Repository此注解可不加,加是防止在使用@Autowired注解时IDEA报错

    在启动类上指定xml映射接口包名,对指定包进行扫描

    @MapperScan("com.xxxx.mapper") //扫描的mapper

    事务springboot已经默认配置完成,只需要在对应的service层加上@Transactional注解即可

    展开全文
  • 与test-while-idle一起使用,设置5分钟 spring.datasource.other.time-between-eviction-runs-millis=300000 #连接池空闲连接的有效时间 ,设置30分钟 spring.datasource.other.min-evictable-idle-time-millis=...
  • springBoot数据库连接池常用配置

    千次阅读 2019-08-27 09:36:02
    spring.datasource.time-between-eviction-runs-millis指定空闲连接检查、废弃连接清理、空闲连接池大小调整之间的操作时间间隔 spring.datasource.transaction-isolation指定事务隔离级别,使用Hikari ...
  • springboot数据库连接池使用策略

    万次阅读 2016-05-21 12:18:15
    springboot官方文档介绍数据库连接池的使用策略如下: Production database connections can also be auto-configured using a pooling DataSource. Here’s the algorithm for choosing a specific ...
  • springboot数据库连接池配置

    千次阅读 2022-04-02 11:17:29
    currentSchema=public # 数据库用户名 username: postgres # 数据库密码 password: 666 # 连接池配置,采用 ali druid 连接池,Java中常用的数据库连接池有:DBCP 、C3P0、BoneCP、Proxool、DDConnectionBroker、...
  • 并且在springboot2.0之后,采用的默认数据库连接池就是Hikari。Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 数据库连接池的优点,同时加入了日志监控。 一、导入..
  • SpringBoot2数据库连接池自动装配原理一、SpringBoot数据库连接池的相关默认二、SpringBoot默认的数据库连接池,以及自动装配原理三、使用其他的数据库连接池:例如Druid 一、SpringBoot数据库连接池的相关默认 ...
  • springboot 查看数据库连接池

    千次阅读 2022-04-11 21:57:07
    springboot 查看数据库连接池
  • springboot配置数据库连接池

    千次阅读 2022-04-27 07:41:01
    一、传统java配置 java配置主要靠java类和一些注解,比较常用的注解有: @Configuration:声明一...1.首先引入Druid连接池依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId&g
  • springboot数据库连接池

    千次阅读 2018-04-22 22:37:27
    数据库连接池有dbcp、c3p0、druid、tomcat-jdbc连接池等等,那么当我们不去指定数据库连接池的时候,springboot默认是什么数据库连接池呢?答案是:tomcat-jdbc数据源,不信你往下看。 当springboot工程启动时...
  • SpringBoot笔记 —— 数据库连接池

    千次阅读 2021-11-12 23:48:48
    首先写一个测试类,来看一下连接池的运行过程 package com.demo.spring.test; import org.apache.commons.dbcp2.BasicDataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java....
  • springboot 数据库连接池常用配置

    千次阅读 2019-05-08 12:47:00
    spring.datasource.time-between-eviction-runs-millis指定空闲连接检查、废弃连接清理、空闲连接池大小调整之间的操作时间间隔 spring.datasource.transaction-isolation指定事务隔离级别,使用Hikari ...
  • SpringBoot-设置数据库连接池

    千次阅读 2022-03-01 16:59:30
    SpringBoot-设置数据库连接池 介绍 功能 dbcp druid c3p0 tomcat-jdbc HikariCP 是否支持PSCache 是 是 是 否 否 监控 jmx jmx/log/http jmx/log jmx jmx 扩展性 弱 好 弱 弱 弱 sql拦截及解析 无 ...
  • Springboot2.0以后默认数据库连接池选择了Hikari(性能高)开源地址:https://github.com/brettwooldridge/HikariCP里面有技术文档 性能方面hikariCP>druid>tomcat-jdbc>dbcp>c3p0,可以参考性能对比 ...
  • 1.SpringBoot数据库连接池的相关默认 springBoot之前的版本默认使用的是Tomcat的数据库连接池 较新的版本2点多(具体多少我看看)默认使用的是Hikari(我使用的是2.2.1) 默认支持数据库连接池: Tomcat ...
  • 这里写目录标题springboot配置数据库连接池druid springboot配置数据库连接池druid 1.第一步首先创造一个springboot项目 2.导入相关的druid所需pom依赖 <dependency> <groupId>com.alibaba</...
  • springboot项目配置数据库连接池Druid

    千次阅读 2022-01-15 00:11:03
    com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://localhost:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 username: root password: root druid: initial-size: 5 #连接池初始化大小...enabled: true # 新版默认值是 false, 需要手动打开 login-username: root login-password: 123456 reset-enable: true allow: "" # 允许所有ip访问 DruidConfig @Configuration public class ...
  • springboot之druid数据库连接池

    千次阅读 2022-01-09 14:03:46
    1.新建springboot项目 2.druid学习地址 https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter 3.导入druid相关依赖 <!--druid相关依赖--> <dependency> <groupId>...
  • min-evictable-idle-time-millis: 30000 # 用来检测数据库连接是否有效的sql 必须是一个查询语句(oracle中为 select 1 from dual) validation-query: select 'x' # 申请连接时会执行validationQuery检测连接是否有效...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,705
精华内容 13,882
关键字:

springboot数据库连接池

spring 订阅