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自动读取指定文件夹下所有文件的方法

    要实现Java自动读取指定文件夹下所有文件的功能,可以使用Java自带的File类和递归算法。File类提供了访问文件和目录的相关方法,递归算法可以依次遍历文件夹中的每一个文件。 下面是Java自动读取指定文件夹下所有文件的步骤: 1. 创建File对象,指定文件夹路径 首先需要创建一个File对象,指定要读取的文件夹路径。可以使用File类的构造函数来实现…

    Java 2023年5月20日
    00
  • PHP实现字节数Byte转换为KB、MB、GB、TB的方法 原创

    PHP实现字节数Byte转换为KB、MB、GB、TB的方法 在开发PHP程序时,我们经常需要对文件大小进行处理,通常情况下我们会使用字节数来表示文件大小,但有时我们需要将字节数转换成更容易理解的单位,比如 KB、MB、GB、TB等。 下面是PHP实现字节数Byte转换为KB、MB、GB、TB的方法: 方法一:自定义函数 function formatSize…

    Java 2023年5月26日
    00
  • Java模糊查询方法详解

    当我们需要查找一个大型数据集中的特定信息时,使用模糊查询是非常重要的。Java语言提供了多种方法来执行模糊搜索操作,这些方法可以允许我们使用不完全的或相似的数据来查找结果。 1. 字符串的模糊查询 在Java中,我们可以使用contains()方法来执行字符串的模糊查询。该方法将返回一个布尔值来表示该字符串是否包含所需的字符集。下面的示例演示了如何使用con…

    Java 2023年5月26日
    00
  • Springboot连接数据库及查询数据完整流程

    下面我将为大家详细讲解“Springboot连接数据库及查询数据完整流程”的完整攻略。 准备工作 首先,需要在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st…

    Java 2023年5月20日
    00
  • 教你怎么用JSP统计网站访问人数

    下面我将详细讲解如何使用 JSP 统计网站访问人数的完整攻略。 1. 确定需求和实现方式 首先,我们需要确定我们统计访问人数的具体需求。一般来说,统计网站访问人数可以通过记录网站访问量或者记录独立访客数量来实现。 对于记录网站访问量,一般常用的方式是在网站的每个页面中嵌入一个计数器。当用户访问网站的时候,计数器会自动加一。而对于独立访客数量的记录,则需要在用…

    Java 2023年6月15日
    00
  • java基础面试题整理小结

    我们来详细讲解如何整理Java基础面试题的攻略。 1. 收集问题 首先,我们需要收集面试时经常出现的问题。可以通过以下途径进行收集: 查阅经典面试题 分析官方文档 参考编程书籍和教程 借鉴其他网站的面试问题 收集到的问题可以先列出来,并加上备注,便于后续整理和分类。 2. 整理分类 将问题按照分类整理,比如语法、集合、并发、IO等方面进行归类。这样方便后续查…

    Java 2023年5月26日
    00
  • Java lambda表达式与泛型整理总结

    本文主要介绍Java lambda表达式与泛型的相关概念,包括基本语法、使用场景和示例。使用Markdown语法进行排版,方便阅读。 Java lambda表达式 基本语法 Lambda表达式是JDK 1.8中引入的新特性,简化了编写匿名内部类的过程。其基本语法如下: (parameters) -> expression 或 (parameters) …

    Java 2023年5月26日
    00
  • java程序运行时内存分配详解

    Java程序运行时内存分配详解 Java程序运行时内存分配是Java程序员必须理解和掌握的重要知识点之一。了解内存分配可以帮助我们更好的管理内存,提高程序性能,避免程序崩溃等问题的出现。 Java内存分区 在Java中,内存分配主要分为以下几个区域: 程序计数器(Program Counter Register) 虚拟机栈(Java Virtual Mach…

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