当前位置: 首页 > article >正文

spring-boot(更换数据源)

以更换druid数据源为例

第一步要排除原来的默认数据源

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <exclusions>
                <!--排除默认的HikariCP数据源-->
                <exclusion>
                    <groupId>com.zaxxer</groupId>
                    <artifactId>HikariCP</artifactId>
                </exclusion>
            </exclusions>

 </dependency>

第二步引入druid数据源

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
         <dependency>//日志依赖可以不用
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
            <scope>compile</scope>
        </dependency>

第三步配置Druid数据源(两种方式)

Druid Spring Boot Starter 配置属性的名称完全遵照 Druid;

  • 我们可以通过 Spring Boot 配置文件(application.yml / application.properties)来配置Druid数据库连接池和监控,如果没有配置则使用默认值。具体配置可以参考Druid Spring Boot Starter

  • DruidDataSource 内提供 setter方法 的可配置属性都将被支持。你可以参考WIKI文档或通过IDE输入提示来进行配置。配置文件的格式你可以选择.properties或.yml,效果是一样的,在配置较多的情况下推荐使用*.yml。

  • 也可以自己写Druid的配置文件和@Configuration来配置;

  • 使用DruidDataSourceAutoConfigure注册一个DruidDataSourceWrapper的数据源

    • 使用DruidStatProperties接收配置信息

创建配置文件application-druid.yml(方式一配置方式)

logging:
  level:
    root: info
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CST
    username: root
    password: sasa
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 初始化大小,最小,最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存时间
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1 FROM sys_user
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      # 打开 PSCache,并且指定每个连接上 PSCache 的大小
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      # 配置监控统计拦截的 Filter,去掉后监控界面 SQL 无法统计,wall 用于防火墙
      filters: stat,wall,log4j
      # 通过 connection-properties 属性打开 mergeSql 功能;慢 SQL 记录
      connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      # 配置 DruidStatFilter
      webStatFilter:
          enabled: true
          url-pattern: /*
          exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
      # 配置 DruidStatViewServlet
      statViewServlet:
          url-pattern: /druid/*
          # IP 白名单,没有配置或者为空,则允许所有访问
          allow: 127.0.0.1
          # IP 黑名单,若白名单也存在,则优先使用
          deny: 192.168.31.253
          # 禁用 HTML 中 Reset All 按钮
          reset-enable: true
          # 登录用户名/密码
          login-username: admin
          login-password: sasa

 在application.yml中激活配置文件

spring:
  profiles:
    active: druid

访问:druid monitor登录换源完成

# 登录用户名/密码
          login-username: admin
          login-password: sasa

方式二:注解配置

配置文件

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CST
    username: root
    password: sasa
    type: com.alibaba.druid.pool.DruidDataSource
    # 初始化大小,最小,最大
    initial-size: 5
    min-idle: 5
    max-active: 20
    # 配置获取连接等待超时的时间
    max-wait: 60000

package com.zking.config;
​
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
​
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
​
@Configuration
public class DruidConfig {
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
       return  new DruidDataSource();
    }
​
    //配置Druid的监控
    //1、配置一个管理后台的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String,String> initParams = new HashMap<>();
​
        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","sasa");
        initParams.put("allow","");//默认就是允许所有访问
        initParams.put("deny","192.168.15.21");
​
        bean.setInitParameters(initParams);
        return bean;
    }
​
    //2、配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());
​
        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");
​
        bean.setInitParameters(initParams);
​
        bean.setUrlPatterns(Arrays.asList("/*"));
​
        return  bean;
    }
}

http://www.kler.cn/a/381000.html

相关文章:

  • MySQL 8.0:explain analyze 分析 SQL 执行过程
  • 【YashanDB知识库】jdbc查询st_geometry类型的数据时抛出YAS-00101错误
  • 项目亮点案例
  • javaEE--计算机是如何工作的-1
  • Java - 日志体系_Apache Commons Logging(JCL)日志接口库
  • “AI 线索精益模型调用系统:开启精准营销新引擎
  • clickhouse运维篇(二):多机器手动部署ck集群
  • 一篇文章帮你彻底解决gradle、gradle插件、jdk版本兼容性问题
  • 洗衣小程序/洗鞋小程序 洗衣店系统,洗衣系统源码
  • 面试题:JVM(六)
  • 接口/泛型
  • 界面控件DevExpress WPF中文教程:Data Grid——卡片视图概述
  • 阿里云高并发测试-Redis缓存机制
  • pdf文件预览和导出
  • 鉴源实验室·加密技术在汽车系统中的应用
  • 力扣438——找到字符串中的所有字母异位词
  • stack和queue --->容器适配器
  • Oracle Sql查询和性能优化(持续更新)
  • 掌握 Jest 中的模块模拟:提升单元测试的灵活性与可靠性
  • 【企业微信新版sdk】
  • java.io.FileNotFoundException: Could not locate Hadoop executable: (详细解决方案)
  • JavaCV学习第一课
  • 栈 算法专题
  • SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“
  • 深入探讨 ESPnet AIShell 项目:ASR 脚本 asr.sh 的实现与解析(一)之脚本前564行,定义各种配置项、函数和条件逻辑
  • Oracle 11g DataGuard GAP处理