SpringBoot项目配置多个不同数据源并使用启用Druid监控

一、包引入

        
            com.alibaba
            druid-spring-boot-starter
            1.1.21
        

 

二、YML文件配置

示例中有两个数据源。

        一个是postgresql,用于业务数据存储,为默认数据源;

        一个是clickhouse,用于用户请求日志记录;

# Spring配置
spring:
  datasource:
    # 数据源一(默认)
    primary:
      type: com.alibaba.druid.pool.DruidDataSource
      jdbcUrl: jdbc:postgresql://192.168.1.1:8899/database
      driverClassName: org.postgresql.Driver
      username: root
      password: root
      filters: wall

    # 数据源二(日志记录)
    clickhouse:
      driverClassName: ru.yandex.clickhouse.ClickHouseDriver
      jdbcUrl: jdbc:clickhouse://192.168.1.2:8089/default?socket_timeout=300000
      username: root
      password: root

    # 开启sql监控
    druid:
      # 监控配置
      stat-view-servlet:
        login-username: admin                       # 登录账号
        login-password: admin                       # 登录密码
        reset-enable: false                         # 重置监控页面数据
        url-pattern: /druid/*                       # 登录页面后缀
        enabled: true                               # 开启监控
        allow:                                      # 添加IP白名单,不写就是所有都允许
      # 监控配置中的 web监控
      web-stat-filter:
        url-pattern: /*
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
        enabled: true

 

三、数据源注入

使用注解的方式注入,其中默认数据源使用@Primary注解。完整代码如下: 

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;


/**
 * Created with 跳跳公司.
 *
 * @Author: 小皮球
 * @Date: 2023/04/23/16:32
 * @Description:
 */
@Configuration
public class DataSourceConfig {

    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.clickhouse")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

}

如果要使用第二个数据源,则使用构造方法+注解注入即可。以下为示例:

@Aspect
@Component
public class AllLogsAspect {

    private final JdbcTemplate clickhouseJdbcTemplate;

    /**
     * 注入clickhouse数据源
     *
     * @param secondaryDataSource
     */
    public AllLogsAspect(@Qualifier("secondaryDataSource") DataSource secondaryDataSource) {
        this.clickhouseJdbcTemplate = new JdbcTemplate(secondaryDataSource);
    }

}

四、Druid访问

如果开启了SpringSecurity,则需求放行“/druid/**”。

.antMatchers("/druid/**").permitAll()

输入域名:端口/上下文路径/druid/login.html,进入登录页面

SpringBoot项目配置多个不同数据源并使用启用Druid监控_第1张图片

你可能感兴趣的:(spring,boot,后端,java)