SpringBoot详解如何进行整合Druid数据源

接下来我将为您讲解“SpringBoot如何整合Druid数据源”的完整攻略。

1. 添加Druid依赖

首先,我们需要在pom.xml中添加Druid的依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

2. 添加Druid配置

在application.yml或者application.properties中添加Druid的配置,包括数据库的连接信息、Druid监控界面的配置信息和其他的自定义配置信息,示例如下:

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&allowMultiQueries=true&useSSL=false
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 5
      max-active: 20
      min-idle: 5
      log-filter:
        merge-sql: true
        slow-sql-millis: 1000
      web-stat-filter:
        enabled: true
        url-pattern: /druid/*
        exclusions: /static/*
        session-stat-max-count: 1000
        slow-sql-millis: 5000
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: admin
        login-password: admin
      # 自定义配置
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      validation-query: SELECT 1 FROM DUAL
      test-on-borrow: false
      test-on-return: false
      test-while-idle: true
      time-between-eviction-runs-millis: 1000
      min-evictable-idle-time-millis: 60000
      remove-abandoned: true
      remove-abandoned-timeout-millis: 60000
      log-abandoned: true

3. 配置数据源

配置数据源时,需要引用Druid的数据源,在application.yml或者application.properties中添加如下配置:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource

4. 配置事务

配置事务时,需要使用Druid提供的Spring的事务管理器,将其配置到Spring的事务管理器中,代码如下:

@Configuration
@EnableTransactionManagement
public class DataSourceConfig {
    @Bean
    @Primary
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        // 设置数据源属性
        return dataSource;
    }

    @Bean
    public PlatformTransactionManager txManager() {
        return new DataSourceTransactionManager(dataSource());
    }
}

5. 示例1:使用Druid监控界面

在使用Druid监控界面时,需要增加servlet和filter,代码如下:

@Configuration
public class DruidConfig {
    @Bean
    public ServletRegistrationBean druidServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");

        // IP白名单
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");

        // IP黑名单(共同存在时,deny优先于allow)
        servletRegistrationBean.addInitParameter("deny", "192.168.0.100");

        // 控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "admin");

        // 是否能够重置数据 禁用HTML页面上的“Reset All”功能
        servletRegistrationBean.addInitParameter("resetEnable", "false");

        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean druidFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());

        // 过滤器拦截的url
        filterRegistrationBean.addUrlPatterns("/*");

        // 不拦截的url
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");

        // 监控maven连接
        filterRegistrationBean.addInitParameter("profileEnable", "true");

        return filterRegistrationBean;
    }
}

6. 示例2:使用Druid的连接池

使用Druid的连接池时,可以对连接池的一些配置进行设置,代码如下:

@Configuration
public class DataSourceConfig {
    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();

        // 设置数据源属性
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        dataSource.setUsername("root");
        dataSource.setPassword("root");

        // 初始化连接数
        dataSource.setInitialSize(5);
        // 最小空闲数
        dataSource.setMinIdle(5);
        // 最大连接数
        dataSource.setMaxActive(20);
        // 获取连接时的最大等待时间,单位毫秒
        dataSource.setMaxWait(60000);
        // 间隔多久进行检测,关闭空闲连接,单位毫秒
        dataSource.setTimeBetweenEvictionRunsMillis(60000);
        // 连接在池中最小生存的时间,单位毫秒
        dataSource.setMinEvictableIdleTimeMillis(300000);

        // 连接池配置,通过这些属性可以监控数据库连接
        dataSource.setPoolPreparedStatements(true);
        dataSource.setMaxPoolPreparedStatementPerConnectionSize(20);
        dataSource.setValidationQuery("SELECT 1");
        dataSource.setTestOnBorrow(false);
        dataSource.setTestOnReturn(false);
        dataSource.setTestWhileIdle(true);
        dataSource.setRemoveAbandoned(true);
        dataSource.setRemoveAbandonedTimeoutMillis(180000);
        dataSource.setLogAbandoned(true);
        dataSource.setFilters("stat");

        return dataSource;
    }

    @Bean(name = "jdbcTemplate")
    public JdbcTemplate jdbcTemplate(@Qualifier("dataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

以上内容就是整合Druid数据源的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot详解如何进行整合Druid数据源 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java 非常好用的反射框架Reflections介绍

    Java 反射框架 Reflections 介绍 什么是 Reflections Reflections 是一个非常好用的 Java 反射框架,可以用于查找和获取 Java 类中的注解、方法、属性等信息。通过 Reflections 可以方便地实现自动化扫描和创建组件、注册 Bean 等功能。 Reflections 的使用方法 使用 Reflections…

    Java 2023年5月26日
    00
  • SpringMVC上传文件的两种方法

    在 Spring MVC 中,我们可以使用两种方法来上传文件,分别是使用 MultipartFile 类型的参数和使用 CommonsMultipartResolver 类。本文将详细讲解 Spring MVC 上传文件的两种方法,包括如何使用 MultipartFile 类型的参数和如何使用 CommonsMultipartResolver 类,并提供两个…

    Java 2023年5月18日
    00
  • spring aop底层原理及如何实现

    我们来详细讲解“Spring AOP的底层原理及如何实现”。 1. 概述 Spring框架提供了面向切面编程(AOP)的支持,它可以通过配置的方式很方便地实现各种切面。Spring AOP遵循了AOP的标准规范,将横切关注点和核心业务逻辑进行分离。Spring AOP底层是基于动态代理的实现方式。 2. 动态代理 Spring AOP底层是基于动态代理的实现…

    Java 2023年5月27日
    00
  • Java微信小程序oss图片上传的实现方法

    我很乐意为你介绍“Java微信小程序oss图片上传的实现方法”的完整攻略。 简介 微信小程序是基于微信平台提供的一种新型应用,其天生具备了社交和强大的传播能力。作为一种重要的互联应用,微信小程序在业界受到广泛关注和应用。本文主要讲解在微信小程序中使用OSS存储来实现图片上传的相关知识和具体操作。 前置知识 在开始讲解具体实现方法之前,有几个重要的前置知识需要…

    Java 2023年5月23日
    00
  • MyEclipse怎么修改JSP默认编码?

    下面是关于如何修改MyEclipse JSP默认编码的攻略: 1. 打开MyEclipse首选项 打开MyEclipse,点击“Window”菜单,选择“Preferences”选项。 2. 找到Web – JSP – Files 在弹出的Preferences窗口中,依次点击“Web”、“JSP”、“Files”。 3. 修改文件编码 在“Files”选项…

    Java 2023年6月15日
    00
  • JavaScript实现留言板添加删除留言

    下面是“JavaScript实现留言板添加删除留言”的完整攻略: 1. 创建HTML页面结构 首先创建一个HTML文件,结构如下: <!DOCTYPE html> <html> <head> <title>留言板</title> </head> <body> <h1&g…

    Java 2023年6月15日
    00
  • Tomcat部署Bolo动态博客

    下面是详细讲解如何在Tomcat上部署Bolo动态博客的完整攻略: 准备工作 下载Bolo动态博客的源代码,可以从官方GitHub仓库或其他源中获取:https://github.com/bolo/bolo 安装Java和Tomcat,可以从官方网站下载安装包并按照提示完成安装,建议使用JDK 8版本和Tomcat 8.5版本及以上。 在Tomcat的/co…

    Java 2023年5月19日
    00
  • java与微信小程序实现websocket长连接

    下面是详细讲解“java与微信小程序实现websocket长连接”的完整攻略。 什么是WebSocket长连接 WebSocket是一种在单个TCP连接上进行全双工通信的协议。它通过在握手阶段将HTTP升级协议为WebSocket协议来实现。在握手成功后,客户端和服务器端可以互相推送消息,而不需要不断的发起HTTP请求和响应。 WebSocket长连接通常用…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部