千家信息网

springboot中怎么引入druid数据源

发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,本篇文章为大家展示了springboot中怎么引入druid数据源,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。第一步、引入依赖 mysql
千家信息网最后更新 2024年11月18日springboot中怎么引入druid数据源

本篇文章为大家展示了springboot中怎么引入druid数据源,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。


第一步、引入依赖

        mysql        mysql-connector-java        runtime        com.alibaba        druid        1.1.5

第二步、配置 application.properties 文件

#数据源配置spring.datasource.url=jdbc:mysql://192.168.0.131:3306/hongone?useAffectedRows=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8spring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#druid连接池spring.datasource.type=com.alibaba.druid.pool.DruidDataSource# 连接池的配置信息# 初始化大小,最小,最大spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20# 配置获取连接等待超时的时间spring.datasource.maxWait=30000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒spring.datasource.timeBetweenEvictionRunsMillis=60000# 配置一个连接在池中最小生存的时间,单位是毫秒spring.datasource.minEvictableIdleTimeMillis=300000spring.datasource.validationQuery=SELECT 1 FROM DUALspring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=false# 打开PSCache,并且指定每个连接上PSCache的大小spring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙spring.datasource.filters=stat,wall# 通过connectProperties属性来打开mergeSql功能;慢SQL记录spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=2000

注意 : 这里的配置根据项目需要去进行自定义,比如 超时连接时间 、慢 sql 查询时间 等

第三步、数据源配置文件

package com.hone.system.utils.druid;import com.alibaba.druid.pool.DruidDataSource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import javax.sql.DataSource;import java.sql.SQLException;@Configurationpublic class DruidDBConfig{    private Logger logger = LoggerFactory.getLogger(DruidDBConfig.class);    @Value("${spring.datasource.url}")    private String dbUrl;    @Value("${spring.datasource.username}")    private String username;    @Value("${spring.datasource.password}")    private String password;    @Value("${spring.datasource.driver-class-name}")    private String driverClassName;    @Value("${spring.datasource.initialSize}")    private int initialSize;    @Value("${spring.datasource.minIdle}")    private int minIdle;    @Value("${spring.datasource.maxActive}")    private int maxActive;    @Value("${spring.datasource.maxWait}")    private int maxWait;    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")    private int timeBetweenEvictionRunsMillis;    @Value("${spring.datasource.minEvictableIdleTimeMillis}")    private int minEvictableIdleTimeMillis;    @Value("${spring.datasource.validationQuery}")    private String validationQuery;    @Value("${spring.datasource.testWhileIdle}")    private boolean testWhileIdle;    @Value("${spring.datasource.testOnBorrow}")    private boolean testOnBorrow;    @Value("${spring.datasource.testOnReturn}")    private boolean testOnReturn;    @Value("${spring.datasource.poolPreparedStatements}")    private boolean poolPreparedStatements;    @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")    private int maxPoolPreparedStatementPerConnectionSize;    @Value("${spring.datasource.filters}")    private String filters;    @Value("{spring.datasource.connectionProperties}")    private String connectionProperties;    /**     * @Bean 声明,DataSource 对象为 Spring 容器所管理;     * @Primary 表示这里定义的DataSource将覆盖其他来源的DataSource。     * StatFilter,用于统计监控信息。StatFilter的别名是stat。     * 统计SQL信息,合并统计。mergeStat是的MergeStatFilter缩写。     *     通过 DataSource 的属性 或者     *                          connectProperties属性来打开mergeSql功能      * StatFilter属性slowSqlMillis用来配置SQL慢的标准     *     * @return     */    @Bean    @Primary    public DataSource dataSource() {        DruidDataSource datasource = new DruidDataSource();        datasource.setUrl(dbUrl);        datasource.setDriverClassName(driverClassName);        datasource.setUsername(username);        datasource.setPassword(password);        //configuration        datasource.setInitialSize(initialSize);        datasource.setMinIdle(minIdle);        datasource.setMaxActive(maxActive);        datasource.setMaxWait(maxWait);        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);        datasource.setValidationQuery(validationQuery);        datasource.setTestWhileIdle(testWhileIdle);        datasource.setTestOnBorrow(testOnBorrow);        datasource.setTestOnReturn(testOnReturn);        datasource.setPoolPreparedStatements(poolPreparedStatements);        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);        try {            /**             * 设置StatFilter,用于统计监控信息。             * StatFilter的别名是stat             *             */            datasource.setFilters(filters);        } catch (SQLException e) {            logger.error("druid configuration initialization filter : {0}",e);        }        datasource.setConnectionProperties(connectionProperties);        return datasource;    }}

第四步、通过注解的方式配置监控显示页面 Servlet

import com.alibaba.druid.support.http.StatViewServlet;import javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;/** * StatViewServlet用于展示Druid的统计信息。 * 提供监控信息展示的html页面 * 提供监控信息的JSON API * * 内置监控页面的首页是/druid/index.html * * loginUsername、loginPassword  登录用户名和密码 *//** * @Webservlet * 有两个属性可以用来表示Servlet的访问路径,分别是value和urlPatterns。value和urlPatterns都是数组形式, * 表示我们可以把一个Servlet映射到多个访问路径,但是value和urlPatterns不能同时使用。 * */@WebServlet(        urlPatterns = {"/druid/*"},        initParams = {                @WebInitParam(name = "loginUsername", value = "admin"),                @WebInitParam(name = "loginPassword", value = "admin"),                @WebInitParam(name = "resetEnable", value = "false")    })public class DruidStatViewServlet extends StatViewServlet {}

第五步、通过注解的方式配置采集Filter

import com.alibaba.druid.support.http.WebStatFilter;import javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebInitParam;/** * WebStatFilter用于采集web-jdbc关联监控的数据。 * 属性filterName声明过滤器的名称,可选 * 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性) */@WebFilter(        urlPatterns = "/*",        initParams = {                @WebInitParam(name = "exclusions",value = "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*")        })public class DruidStatFilter extends WebStatFilter {}

第六步、启动类修改

@SpringBootApplication@MapperScan("com.hone.dao") //开启mapper扫描@ServletComponentScan //开启servlet扫描public class HongoneApplication  {.....}

最后,启动项目进行测试 在浏览器中输入 http://localhost:8080/druid/index.html

(注意: 如果你的项目设置了访问前缀 , 访问地址问 http://localhost:8080/访问前缀/druid/index.html )

上述内容就是springboot中怎么引入druid数据源,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0