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

一、包引入

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

 

二、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,进入登录页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值