Spring Boot中整合Druid实现数据库连接池

闪耀之星喵 2023-04-25 ⋅ 41 阅读

在Spring Boot中,我们可以使用Druid来实现高效的数据库连接池,以提高应用程序的性能和可靠性。Druid是一个Java语言编写的开源项目,具有强大的监控和扩展功能。

导入依赖

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

<dependencies>
    <!--Spring Boot Starter Dependencies-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--Druid Dependencies-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.5</version>
    </dependency>

    <!--其他数据库驱动的依赖-->

</dependencies>

配置数据源

接下来,我们需要在application.properties文件中配置Druid数据源。以下是一个示例配置:

# 数据库连接属性
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=123456

# Druid配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initial-size=5
spring.datasource.min-idle=5
spring.datasource.max-active=20
spring.datasource.max-wait=60000
spring.datasource.filters=stat
# 监控统计拦截的filters,多个用逗号分隔
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.web-stat-filter.url-pattern=/*
spring.datasource.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

在这个示例中,我们使用了一个MySQL数据库,并配置了一些常见的连接池属性。

配置Druid监控

Druid提供了一些监控和管理功能,我们可以通过配置来启用这些功能。

首先,我们需要创建一个Servlet来启用Druid的监控界面。创建一个新的类DruidStatViewServletConfig:

import com.alibaba.druid.support.http.StatViewServlet;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

@WebServlet(urlPatterns = "/druid/*",
    initParams={
        @WebInitParam(name="allow",value="127.0.0.1"),
        @WebInitParam(name="loginUsername",value="admin"),
        @WebInitParam(name="loginPassword",value="admin"),
        @WebInitParam(name="resetEnable",value="false")
    })
public class DruidStatViewServletConfig extends StatViewServlet {

}

在这个类中,我们配置了监控界面的访问路径、用户名和密码等信息。

接下来,在application.properties文件中添加如下配置:

# Druid监控配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

配置Druid过滤器

Druid还提供了一些过滤器用于统计SQL执行性能、SQL执行时长等信息。

我们可以创建一个新的类DruidWebStatFilterConfig来启用Druid的Web Stat Filter,以监控URL访问和SQL执行性能。

import com.alibaba.druid.support.http.WebStatFilter;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
    initParams={
        @WebInitParam(name="exclusions", value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")
    }
)
public class DruidWebStatFilterConfig extends WebStatFilter {
    
}

在这个类中,我们配置了排除URL的规则,以避免对静态资源的监控。

然后,在application.properties中添加如下配置:

# Druid监控配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

# Druid过滤器配置
spring.datasource.druid.web-stat-filter.enabled=true

测试数据库连接池

配置完成后,我们可以通过编写一个简单的数据库连接测试来验证Druid数据源和连接池的正确性。

首先,我们创建一个新的类DatabaseTest:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

@Component
public class DatabaseTest implements CommandLineRunner {

    @Autowired
    private DataSource dataSource;

    @Override
    public void run(String... args) throws Exception {
        testDataSource();
    }

    public void testDataSource() throws SQLException {
        Connection conn = dataSource.getConnection();
        System.out.println("数据库连接信息:" + conn.getMetaData().getURL());
        conn.close();
    }
}

在这个类中,我们使用@Autowired注解将数据源注入到dataSource字段中,然后通过getConnection()方法获取一个数据库连接。

最后,在SpringBoot主类上添加@ServletComponentScan注解,以扫描ServletFilter

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

现在,我们可以运行这个应用程序,并查看控制台输出,以验证数据库连接池配置是否正确。

总结

在本文中,我们学习了如何在Spring Boot中整合Druid实现数据库连接池。通过这种方式,我们可以有效地管理和监控数据库连接,提高应用程序的性能和可靠性。

在实际应用中,我们还可以进一步配置Druid的各种属性,以满足不同的需求。你可以参考Druid官方文档来了解更多配置选项和使用方法。

希望本文可以帮助你成功整合Druid数据库连接池,如果你有任何问题或建议,欢迎留言讨论。完成这个实践后,你应该对Druid的基本使用和Spring Boot中的数据库连接池有了更深入的理解。


全部评论: 0

    我有话说: