SpringBoot使用Druid数据源的配置方法

作者:crazy_bai 时间:2023-08-19 19:52:11 

Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池)

一、依赖

为了测试,使用jdbcTemplate


<!-- jdbcTemplate -->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- druid数据库连接池 -->
<dependency>
 <groupId>com.alibaba</groupId>
 <artifactId>druid</artifactId>
 <version>1.0.26</version>
</dependency>
<!-- mysql connector -->
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <scope>runtime</scope>
</dependency>

二、Druid配置


druid.properties
#数据库设置
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/uu_core?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
#--------------------------
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=1
spring.datasource.maxActive=50
# 配置获取连接等待超时的时间
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
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=false
#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.filters=stat,wall,log4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true

三、实例化Druid Datasource


package cn.aduu.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
/**
* @author zh
* @ClassName cn.aduu.config.DruidConfiguration
* @Description
*/
@Configuration
@PropertySource(value = "classpath:druid.properties")
public class DruidConfiguration {
 @Bean(destroyMethod = "close", initMethod = "init")
 @ConfigurationProperties(prefix = "spring.datasource")
 public DataSource druidDataSource() {
   DruidDataSource druidDataSource = new DruidDataSource();
   return druidDataSource;
 }
 /**
  * 注册一个StatViewServlet
  * @return
  */
 @Bean
 public ServletRegistrationBean druidStatViewServlet(){
   //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
   ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
   //添加初始化参数:initParams
   //白名单:
   servletRegistrationBean.addInitParameter("allow","127.0.0.1");
   //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
   servletRegistrationBean.addInitParameter("deny","192.168.1.73");
   //登录查看信息的账号密码.
   servletRegistrationBean.addInitParameter("loginUsername","admin");
   servletRegistrationBean.addInitParameter("loginPassword","123456");
   //是否能够重置数据.
   servletRegistrationBean.addInitParameter("resetEnable","false");
   return servletRegistrationBean;
 }
 /**
  * 注册一个:filterRegistrationBean
  * @return
  */
 @Bean
 public FilterRegistrationBean druidStatFilter(){
   FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
   //添加过滤规则.
   filterRegistrationBean.addUrlPatterns("/*");
   //添加不需要忽略的格式信息.
   filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
   return filterRegistrationBean;
 }
}

四、监控

访问 http://localhost:8080/druid, 使用上面配置的账号密码。

SpringBoot使用Druid数据源的配置方法

SpringBoot使用Druid数据源的配置方法

五、测试


@RestController
public class HelloController{
 private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
 @Autowired
 private JdbcTemplate jdbcTemplate;
 @RequestMapping("hello")
 public List<Map<String, Object>> hello() {
   List<Map<String, Object>> list = jdbcTemplate.queryForList("SELECT user,password FROM mysql.user ", new Object[]{});
   return list;
 }
}

访问 localhost:8080/hello


[
 {
   "user": "root",
   "password": "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B"
 },
 {
   "user": "root",
   "password": "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B"
 }
]

总结

以上所述是小编给大家介绍的SpringBoot使用Druid数据源网站的支持!

来源:https://blog.csdn.net/qq_36640744/article/details/80096475

标签:spring,boot,Druid,数据源
0
投稿

猜你喜欢

  • 详解C#中SqlParameter的作用与用法

    2022-11-01 09:51:17
  • C#实现Datatable排序的方法

    2022-12-30 11:31:52
  • JAVA读取属性文件的几种方法总结

    2023-10-21 04:36:40
  • Android中实现EditText密码显示隐藏的方法

    2022-04-13 22:33:56
  • 如何将javaweb项目部署到linux下

    2023-11-11 11:45:11
  • WPF如何自定义ProgressBar滚动条样式

    2021-08-02 13:31:44
  • SpringBoot 如何编写配置文件

    2023-07-14 10:38:24
  • 深入学习C#网络编程之HTTP应用编程(下)

    2023-03-16 12:06:37
  • java中Scanner类的简单用法分享

    2023-04-16 04:24:50
  • C#使用Datatable导出Excel

    2022-01-09 14:50:23
  • Java中的关键字_动力节点Java学院整理

    2022-07-28 06:38:29
  • Android 通过自定义view实现水波纹效果案例详解

    2022-01-12 06:03:48
  • Java IO流相关知识代码解析

    2023-08-05 05:48:04
  • Unity通过代码修改按钮点击效果

    2022-07-29 13:19:37
  • Android实现美团外卖底部导航栏动画

    2022-09-21 20:09:13
  • Android实战教程第一篇之最简单的计算器

    2023-03-12 17:57:54
  • springboot 多数据源的实现(最简单的整合方式)

    2022-08-20 02:30:11
  • Android实现圆形渐变加载进度条

    2021-07-17 18:38:06
  • Java程序员容易犯的10大低级错误

    2022-01-09 06:18:04
  • 详解Android自定义控件属性

    2023-09-27 18:00:34
  • asp之家 软件编程 m.aspxhome.com