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日

相关文章

  • 解析Tomcat架构原理到架构设计

    解析Tomcat架构原理到架构设计 Tomcat是一个非常重要的Java Web应用服务器,它的基础架构设计对于Web应用的性能、可扩展性和稳定性有着至关重要的作用。下面我们来详细讲解如何将Tomcat架构原理解析到架构设计。 1.了解Tomcat的基本架构 Tomcat的基本架构主要由三个部分组成:Server、Service和Connector。其中,S…

    Java 2023年5月19日
    00
  • 详解Lombok快速上手(安装、使用与注解参数)

    详解 Lombok 快速上手 Lombok 是一个 Java 库,可以在编码时自动生成样板代码,以减少 Java 项目中冗长的样板代码量。 安装 Lombok 安装 Lombok 很简单。只需要在项目依赖中加入 Lombok,就能让 Lombok 自动为你生成样板代码。 下面是 Maven 和 Gradle 的配置: Maven <dependency…

    Java 2023年6月1日
    00
  • JavaWeb中struts2实现文件上传下载功能实例解析

    JavaWeb中struts2实现文件上传下载功能实例解析 在JavaWeb应用中,实现文件的上传下载是很常见的需求。而在struts2框架中,实现文件的上传下载也并不难。本文将详细介绍struts2框架中如何实现文件上传下载的功能。 1. 文件上传实现 在struts2框架中,文件上传的实现需要用到Commons-Fileupload和Commons-Io…

    Java 2023年5月20日
    00
  • Hibernate中Session增删改查操作代码详解

    Hibernate中Session增删改查操作详解 什么是Hibernate Session Hibernate是一个优秀的ORM框架,其核心是由多个API组成,其中最重要的是Session。Session是用于与数据库进行交互的主要接口之一,它提供了一系列的增删改查方法,这些方法需要依赖于Hibernate配置的实体类(Entity)的映射关系在数据库中完…

    Java 2023年5月20日
    00
  • Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法

    下面是详细讲解“Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法”的完整攻略。 问题描述 在使用Eclipse编写Java程序时,可能会遇到不会自动生成R.java文件和包的情况,这会导致在项目中使用资源文件时出现问题。 解决步骤 步骤一:检查项目配置 首先,需要检查项目的配置是否正确。可以按照以下步骤操作: 在Eclipse中…

    Java 2023年5月26日
    00
  • Springmvc如何实现向前台传递数据

    下面是Spring MVC向前台传递数据的完整攻略。 1. 了解Spring MVC架构 在Spring MVC中,前台的请求被DispatcherServlet(前端控制器)拦截处理,控制器接收请求,处理请求,然后返回ModelAndView对象给DispatcherServlet,再由DispatcherServlet返回给前台视图。因此,我们可以使用M…

    Java 2023年6月15日
    00
  • JavaMail入门教程之解析邮件(5)

    JavaMail入门教程之解析邮件(5) 在这篇教程中,我们将学习如何使用JavaMail解析邮件内容。JavaMail提供了多种解析邮件内容的方法。我们将介绍以下三种方法: 使用getContentType()获取邮件的内容类型,并根据邮件的类型进行解析; 使用getContent()获取邮件的内容,并根据邮件类型进行解析; 使用MimeMessagePa…

    Java 2023年6月15日
    00
  • Spring jndi数据源配置方法详解

    接下来我将为您提供详细的“Spring jndi数据源配置方法详解”的攻略。 一、什么是JNDI JNDI(Java Naming and Directory Interface)是一个Java应用编程接口(API),它允许客户端发现和访问命名和目录服务。JNDI提供了统一的方法来查找Java对象和资源,例如JDBC数据源,JMS队列和主题等。 二、使用JN…

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