SpringBoot整合Druid数据源过程详解

以下是SpringBoot整合Druid数据源的详细攻略。

准备工作

引入相关依赖

为了使用Druid数据源,我们需要在pom.xml文件中添加以下依赖:

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

在配置文件中添加数据库信息

我们需要在application.propertiesapplication.yml中添加数据库信息,示例:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root123

整合Druid数据源

添加Druid数据源配置

application.propertiesapplication.yml中添加Druid配置信息,示例:

spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 'x' FROM DUAL
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-properties=config.decrypt=false

配置Druid监控

为了更好地管理Druid连接池的使用情况,我们需要配置Druid监控信息。在SpringBoot中,我们需要使用ServletRegistrationBeanFilterRegistrationBean两个类来配置Druid监控。示例:

@Configuration
public class DruidConfig {
    @Bean
    public ServletRegistrationBean<StatViewServlet> statViewServlet() {
        ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        registrationBean.addInitParameter("allow", "127.0.0.1");
        registrationBean.addInitParameter("loginUsername", "admin");
        registrationBean.addInitParameter("loginPassword", "admin");
        registrationBean.addInitParameter("resetEnable", "false");
        return registrationBean;
    }

    @Bean
    public FilterRegistrationBean<WebStatFilter> webStatFilter() {
        FilterRegistrationBean<WebStatFilter> registrationBean = new FilterRegistrationBean<>(new WebStatFilter());
        registrationBean.addUrlPatterns("/*");
        registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");
        return registrationBean;
    }
}

示例

配置多数据源

在实际应用中,我们可能需要连接多个数据库。这时候,我们可以使用SpringBoot的多数据源配置。首先,在application.yml中添加多数据源的配置信息:

spring.datasource.test1.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.test1.url=jdbc:mysql://localhost:3306/db1
spring.datasource.test1.username=root
spring.datasource.test1.password=root123

spring.datasource.test2.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.test2.url=jdbc:mysql://localhost:3306/db2
spring.datasource.test2.username=root
spring.datasource.test2.password=root123

然后,在代码中通过@Qualifier注解和@Primary注解表示使用哪个数据源,示例:

@Configuration
public class DataSourceConfig {
    @Bean
    @Qualifier("test1")
    @ConfigurationProperties(prefix = "spring.datasource.test1")
    public DataSource dataSourceTest1() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean
    @Qualifier("test2")
    @ConfigurationProperties(prefix = "spring.datasource.test2")
    public DataSource dataSourceTest2() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean
    @Primary
    public DynamicDataSource dataSource() {
        Map<Object, Object> targetDataSources = new HashMap<>();
        targetDataSources.put("test1", dataSourceTest1());
        targetDataSources.put("test2", dataSourceTest2());

        DynamicDataSource dynamicDataSource = new DynamicDataSource();
        dynamicDataSource.setTargetDataSources(targetDataSources);
        dynamicDataSource.setDefaultTargetDataSource(dataSourceTest1());
        return dynamicDataSource;
    }
}

@Service
public class TestService {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<Map<String, Object>> queryTest1() {
        return jdbcTemplate.queryForList("SELECT * FROM table1");
    }

    public List<Map<String, Object>> queryTest2() {
        return jdbcTemplate.queryForList("SELECT * FROM table2");
    }

}

配置Druid连接池的参数

我们可以在配置文件中指定Druid连接池的各种参数来控制连接池的使用。以下是一些重要的配置参数:

  • initialSize:初始化连接池大小,默认为0;
  • maxActive:最大活动连接数,默认为8;
  • minIdle:最小空闲连接数,默认为0;
  • maxWait:获取连接的最大等待时间(毫秒),默认为-1;
  • timeBetweenEvictionRunsMillis:通过扫描回收线程来回收连接的时间间隔(毫秒),默认为-1;
  • minEvictableIdleTimeMillis:连接在连接池中最小空闲时间,达到此值后会被回收(毫秒),默认为10006030;
  • validationQuery:连接校验语句,用于检测连接是否可用;
  • testWhileIdle:空闲连接是否进行测试,默认为false;
  • testOnBorrow:每次获取连接时是否进行测试,默认为false;
  • testOnReturn:归还连接时是否进行测试,默认为false;
  • poolPreparedStatements:是否缓存PreparedStatement,默认为false;
  • maxPoolPreparedStatementPerConnectionSize:每个连接中最大缓存PreparedStatement大小,默认为10。

以上就是整合Druid数据源的详细攻略和示例。

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

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

相关文章

  • Ajax+Servlet+jsp显示搜索效果

    如果想要实现“Ajax+Servlet+jsp显示搜索效果”,我们需要完成以下步骤: 前端页面设计 首先,我们需要在前端设计一个搜索框和搜索结果展示区域。搜索框用于输入查询关键词,搜索结果展示区域用于显示查询到的结果。如下示例代码: <form> <input type="text" id="searchInp…

    Java 2023年6月15日
    00
  • EL表达式简介_动力节点Java学院整理

    EL表达式简介 什么是EL表达式 EL表达式是JSP2.0引入的一个表达式语言,它可以在JSP页面中快速地访问JavaBean、request请求、session会话和application上下文中的数据。 EL表达式语法 EL表达式以${}封装,其中${}中的内容就是表达式。通过.来访问JavaBean中的属性,通过[]访问Map中的值。 访问JavaBe…

    Java 2023年6月15日
    00
  • Ajax登陆使用Spring Security缓存跳转到登陆前的链接

    要实现“Ajax登录使用Spring Security缓存跳转到登录前的链接”,需要完成以下步骤: 配置Spring Security首先需要配置Spring Security。可以使用Java Config或XML配置文件来完成配置,具体配置可以参考Spring Security官方文档。需要注意的是,要启用缓存功能,需要配置一个缓存实现类。 实现自定义的…

    Java 2023年6月3日
    00
  • java删除文件和文件夹具体实现

    当我们需要清理旧数据或者卸载应用程序时,通常需要删除一些文件或者文件夹。下面我来讲解一下Java中如何删除文件和文件夹的实现过程。 删除文件 Java中删除文件的方式非常简单,使用Java的File类提供的delete()方法即可。该方法有一个返回值,表示是否成功删除文件。 例如,我有一个名为test.txt的文件,它的绝对路径为C:\Users\usern…

    Java 2023年5月20日
    00
  • Android编程实现随机生成颜色的方法示例

    下面就为您详细讲解“Android编程实现随机生成颜色的方法示例”的完整攻略。 一、问题描述 在Android应用程序中,我们有时需要使用随机生成的颜色来装饰或突出显示某些元素,那么如何在Android编程中实现随机生成颜色的功能呢? 二、实现思路 在Android编程中,我们可以使用Java的Random类来生成随机颜色,并将其应用于要装饰或突出显示的元素…

    Java 2023年6月1日
    00
  • maven为MANIFEST.MF文件添加内容的方法

    下面是使用 Maven 为 MANIFEST.MF 文件添加内容的方法的详细攻略。 1. 使用 Maven 插件配置 MANIFEST.MF 文件 Maven 提供了一个叫做 maven-jar-plugin 的插件,可以在 Maven 构建过程中配置 MANIFEST.MF 文件。我们可以通过在 pom.xml 文件中配置此插件来实现在 MANIFEST.…

    Java 2023年5月20日
    00
  • struts2静态资源映射代码示例

    下面是关于“struts2静态资源映射代码示例”的完整攻略。 什么是struts2静态资源映射? struts2有一个默认的静态资源映射器,会将静态资源(例如图片、CSS、JavaScript文件等)映射到web应用的根目录下,从而可以在浏览器中通过相对路径来访问。 但是,有时候我们需要将这些静态资源放到web应用的其他目录中,或者更改其访问路径,这时就需要…

    Java 2023年5月20日
    00
  • 通过实例深入学习Java的Struts框架中的OGNL表达式使用

    让我来详细讲解一下“通过实例深入学习Java的Struts框架中的OGNL表达式使用”的完整攻略。 什么是Struts框架中的OGNL表达式? OGNL 表达式是 Object-Graph Navigation Language (对象图导航语言)的缩写,是在Struts框架中用于处理表达式语言的一种语言。通过OGNL表达式,我们可以访问对象的属性、方法和集…

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