温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot中怎么引入druid数据源

发布时间:2021-06-18 18:12:24 来源:亿速云 阅读:408 作者:Leah 栏目:大数据

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

 

第一步、引入依赖

<dependency>	<groupId>mysql</groupId>	<artifactId>mysql-connector-java</artifactId>	<scope>runtime</scope> </dependency> <dependency>	<groupId>com.alibaba</groupId>	<artifactId>druid</artifactId>	<version>1.1.5</version> </dependency>

第二步、配置 application.properties 文件

#数据源配置 spring.datasource.url=jdbc:mysql://192.168.0.131:3306/hongone?useAffectedRows=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #druid连接池 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # 连接池的配置信息 # 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 配置获取连接等待超时的时间 spring.datasource.maxWait=30000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打开PSCache,并且指定每个连接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.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; @Configuration public 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 的属性<property name="filters" value="mergeStat" /> 或者      *                          connectProperties属性来打开mergeSql功能 <property name="connectionProperties" value="druid.stat.mergeSql=true" />      * 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数据源

springboot中怎么引入druid数据源

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI