Spring Boot 配置 Druid 数据源 - 详细指南

Druid 是一个强大的数据库连接池,提供了丰富的功能,例如监控、统计、SQL 拦截等等。在 Spring Boot 项目中使用 Druid 数据源非常方便,只需要简单的配置即可。

1. 引入 Druid 依赖

pom.xml 文件中添加 Druid 的依赖:

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

2. 配置数据源

application.propertiesapplication.yml 中添加数据库连接信息:

# 数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root

# 数据库连接池配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# Druid 连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
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.test-while-idle=true
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,logback
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

3. 配置 Druid 监控

可以配置 Druid 监控,以方便查看连接池的使用情况。

在 Spring Boot 的 Application 类中添加注解 @ServletComponentScan ,启用 Servlet 组件扫描。然后创建一个 DruidServletDruidStatViewServlet,用来访问监控页面和获取监控数据。

@SpringBootApplication
@ServletComponentScan
public class Application {

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

    @Bean
    public ServletRegistrationBean<Servlet> druidServletRegistrationBean() {
        ServletRegistrationBean<Servlet> registrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        // IP 白名单
        registrationBean.addInitParameter("allow", "127.0.0.1");
        // IP 黑名单
        registrationBean.addInitParameter("deny", "");
        // 登录账号密码
        registrationBean.addInitParameter("loginUsername", "admin");
        registrationBean.addInitParameter("loginPassword", "admin");
        return registrationBean;
    }

    @Bean
    public FilterRegistrationBean<Filter> druidFilterRegistrationBean() {
        FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>(new WebStatFilter());
        // 过滤规则
        registrationBean.addUrlPatterns("/*");
        // 忽略资源
        registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return registrationBean;
    }

}

4. 使用数据源

在需要使用数据源的类中添加 @Autowired 注解,注入 DataSource 对象,然后就可以使用了。

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private DataSource dataSource;

    @Override
    public void createUser(User user) {
        try (
            Connection connection = dataSource.getConnection();
            PreparedStatement statement = connection.prepareStatement("INSERT INTO user(name, age) VALUES(?, ?)");
        ) {
            statement.setString(1, user.getName());
            statement.setInt(2, user.getAge());
            statement.executeUpdate();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

}

注意:

  • 以上示例仅供参考,实际配置可能需要根据具体情况进行调整。
  • DruidStatViewServlet 的访问地址默认是 /druid/*,可以通过配置 registrationBean.addUrlPatterns() 方法修改访问地址。
  • WebStatFilter 的过滤规则可以通过配置 registrationBean.addUrlPatterns()registrationBean.addInitParameter("exclusions", "*") 方法进行调整。
  • 使用 Druid 监控时,需要在浏览器中访问 /druid/index.html 页面。
  • Druid 的官方文档中提供了更多详细的配置选项,可以参考官方文档:https://github.com/alibaba/druid
Spring Boot 配置 Druid 数据源 - 详细指南

原文地址: https://www.cveoy.top/t/topic/lK8K 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录