1. 引入 DRUID 依赖

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

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>
  1. 配置数据源

在 application.properties 或 application.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
  1. 配置 Druid 监控

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

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

@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;
    }

}
  1. 使用数据源

在需要使用数据源的类中添加 @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);
        }
    }

}
spring 编程如何配置 DRUID 数据源?

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

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