SpringBoot 整合 Druid 数据源

导读:本篇文章讲解 SpringBoot 整合 Druid 数据源,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

一 引入依赖

二 Druid 参数配置

三 Druid Datasource 实例化

四 测试

五 监控


一 引入依赖

<!-- 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>

二 Druid 参数配置

application.properties 文件添加如下配置:

#数据库设置
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/account
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
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true

三 Druid Datasource 实例化

package com.sb.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;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
 
 
@Configuration
@PropertySource(value = "classpath:application.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 statViewServlet() {
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String, String> initParameters = new HashMap<String, String>();
        initParameters.put("loginUsername", "admin");//属性见:com.alibaba.druid.support.http.ResourceServlet
        initParameters.put("loginPassword", "123456");
        initParameters.put("allow", "");//默认允许所有
        initParameters.put("deny", "");
        bean.setInitParameters(initParameters);
        return bean;
    }
 
    /**
     * 配置一个web监控的filter
     * @return
     */
    @Bean
    public FilterRegistrationBean webStatFilter() {
        FilterRegistrationBean filterBean = new FilterRegistrationBean();
        filterBean.setFilter(new WebStatFilter());
        filterBean.setUrlPatterns(Arrays.asList("/*"));
 
        Map<String, String> initParameters = new HashMap<String, String>();
        initParameters.put("exclusions", "*.js,*.css,/druid/*");//属性见:com.alibaba.druid.support.http.WebStatFilter
        filterBean.setInitParameters(initParameters);
 
        return filterBean;
    }
}

四 测试

package com.sb.controller;
 
import com.sb.dto.RetDTO;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
 
@RestController
@RequestMapping
public class TestController {
    @Resource
    private JdbcTemplate jdbcTemplate;
 
    @RequestMapping("/getUserList")
    public RetDTO<List<Map<String, Object>>> getUserList() {
        List<Map<String, Object>> list = jdbcTemplate.queryForList("SELECT id,name,age,create_datetime,update_datetime FROM user ", new Object[]{});
        return RetDTO.getReturnJson(list);
    }
}

访问 localhost:8080/getUserList

{
    "code": 200,
    "msg": "OK",
    "data": [
        {
            "id": 1,
            "name": "张三",
            "age": 18,
            "create_datetime": "2019-09-10T00:27:48.000+0000",
            "update_datetime": "2019-09-10T00:27:48.000+0000"
        },
        {
            "id": 2,
            "name": "李四",
            "age": 20,
            "create_datetime": "2019-09-10T00:27:48.000+0000",
            "update_datetime": "2019-09-10T00:27:48.000+0000"
        },
        {
            "id": 3,
            "name": "王五",
            "age": 19,
            "create_datetime": "2019-09-10T00:27:48.000+0000",
            "update_datetime": "2019-09-10T00:27:48.000+0000"
        }
    ],
    "desc": null
}

五 监控

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

SpringBoot 整合 Druid 数据源

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/9588.html

(0)

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!