千家信息网

SpringBoot中如何整合Druid数据源

发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,这篇文章主要介绍"SpringBoot中如何整合Druid数据源",在日常操作中,相信很多人在SpringBoot中如何整合Druid数据源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2024年09月23日SpringBoot中如何整合Druid数据源

这篇文章主要介绍"SpringBoot中如何整合Druid数据源",在日常操作中,相信很多人在SpringBoot中如何整合Druid数据源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"SpringBoot中如何整合Druid数据源"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.数据库结构

2.项目结构

3.pom.xml文件

      org.springframework.boot    spring-boot-starter-jdbc        mysql    mysql-connector-java    runtime             com.alibaba    druid    1.1.8             log4j    log4j    1.2.17         org.springframework.boot    spring-boot-starter-web          org.springframework.boot    spring-boot-starter-test    test               org.springframework.boot      spring-boot-maven-plugin       

4.application.yml配置文件

spring: datasource:  username: root  password: wangqing  url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai  driver-class-name: com.mysql.jdbc.Driver  type: com.alibaba.druid.pool.DruidDataSource   #  数据源其他配置  initialSize: 5  minIdle: 5  maxActive: 20  maxWait: 60000  timeBetweenEvictionRunsMillis: 60000  minEvictableIdleTimeMillis: 300000  validationQuery: SELECT 1 FROM DUAL  testWhileIdle: true  testOnBorrow: false  testOnReturn: false  poolPreparedStatements: true#  配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙  filters: stat,wall,log4j  maxPoolPreparedStatementPerConnectionSize: 20  useGlobalDataSourceStat: true  connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500  # 合并多个DruidDataSource的监控数据  #useGlobalDataSourceStat: true   mybatis: # 指定全局配置文件位置 #config-location: classpath:mybatis/mybatis-config.xml # 指定sql映射文件位置 mapper-locations: classpath:mapper/*.xml      #如src/main/resources下的mappers文件下的TUserMapper.xml #  schema:#   - classpath:sql/department.sql     #根据department.sql 的sql语句创建表#   - classpath:sql/employee.sql 

5.创建一个DruidConfig的配置类,实例化Druid Datasource

package com.qingfeng.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 javax.sql.DataSource;import java.util.Arrays;import java.util.HashMap;import java.util.Map; @Configurationpublic class DruidConfig {   //指定加载appliction.yml文件里面的spring.datasource开头的   // DruidDataSource类里面的属性与appliction.yml文件里面的spring.datasource开头的对应映射  @ConfigurationProperties(prefix = "spring.datasource")  @Bean  public DataSource druid(){    return new DruidDataSource();  }   //配置Druid的监控  //1、配置一个管理后台的Servlet  @Bean  public ServletRegistrationBean statViewServlet(){    ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");    Map initParams = new HashMap<>();     initParams.put("loginUsername","admin");    initParams.put("loginPassword","123456");    initParams.put("allow","");//默认就是允许所有访问    initParams.put("deny","");     bean.setInitParameters(initParams);    return bean;  }    //2、配置一个web监控的filter  @Bean  public FilterRegistrationBean webStatFilter(){    FilterRegistrationBean bean = new FilterRegistrationBean();    bean.setFilter(new WebStatFilter());    Map initParams = new HashMap<>();    initParams.put("exclusions","*.js,*.css,/druid/*");    bean.setInitParameters(initParams);    bean.setUrlPatterns(Arrays.asList("/*"));    return bean;  }}

6.创建一个UserController类测试

package com.qingfeng.controller; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.ResponseBody; import java.util.List;import java.util.Map; @Controllerpublic class UserController {   @Autowired  JdbcTemplate jdbcTemplate;  @ResponseBody  @GetMapping("/query")  public Map map(){    List> list = jdbcTemplate.queryForList("select * FROM user");    return list.get(0);  }}

7.运行项目,通过浏览器访问 http://localhost:8080/query

8.我们DruidConfig类里配置的下面代码可以帮我们实现监控

//配置Druid的监控  //1、配置一个管理后台的Servlet  @Bean  public ServletRegistrationBean statViewServlet(){    ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");    Map initParams = new HashMap<>();     initParams.put("loginUsername","admin");    initParams.put("loginPassword","123456");    initParams.put("allow","");//默认就是允许所有访问    initParams.put("deny","");     bean.setInitParameters(initParams);    return bean;  }

9.我们启动项目,打开网址:http://localhost:8080/druid/login.html 可以通过登录,查看druid数据源状态监控

我们上面设置的是用户名:admin 密码:123456

到此,关于"SpringBoot中如何整合Druid数据源"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0