<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      若依項目(springboot)新增數據源,非主從庫

      1.在配置文件把數據源配上

      image

       因為是sqlserver 把這項加上

      #                validation-query: SELECT 1          # 或者 SELECT 1 AS ONE

      2.在DruidConfig 加上bean注入

       

      image


      3.添加到數據源

      image

       

      4.數據庫枚舉加上DB2

      image

       5.在對應的方法上面加上注解

      @DataSource(DataSourceType.DB2)

       

      image

       


       

      package com.ruoyi.framework.config;
      
      import java.io.IOException;
      import java.util.HashMap;
      import java.util.Map;
      import javax.servlet.Filter;
      import javax.servlet.FilterChain;
      import javax.servlet.ServletException;
      import javax.servlet.ServletRequest;
      import javax.servlet.ServletResponse;
      import javax.sql.DataSource;
      import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
      import org.springframework.boot.context.properties.ConfigurationProperties;
      import org.springframework.boot.web.servlet.FilterRegistrationBean;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.context.annotation.Primary;
      import com.alibaba.druid.pool.DruidDataSource;
      import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
      import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
      import com.alibaba.druid.util.Utils;
      import com.ruoyi.common.enums.DataSourceType;
      import com.ruoyi.common.utils.spring.SpringUtils;
      import com.ruoyi.framework.config.properties.DruidProperties;
      import com.ruoyi.framework.datasource.DynamicDataSource;
      
      /**
       * druid 配置多數據源
       * 
       * @author ruoyi
       */
      @Configuration
      public class DruidConfig
      {
          @Bean
          @ConfigurationProperties("spring.datasource.druid.master")
          public DataSource masterDataSource(DruidProperties druidProperties)
          {
              DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
              return druidProperties.dataSource(dataSource);
          }
      
          @Bean(name = "db2DataSource")
          @ConfigurationProperties("spring.datasource.druid.db2")
          @ConditionalOnProperty(prefix = "spring.datasource.druid.db2", name = "enabled", havingValue = "true")
          public DataSource db2DataSource(DruidProperties druidProperties) {
              DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
              return druidProperties.dataSource(dataSource);
          }
      
          @Bean
          @ConfigurationProperties("spring.datasource.druid.slave")
          @ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
          public DataSource slaveDataSource(DruidProperties druidProperties)
          {
              DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
              return druidProperties.dataSource(dataSource);
          }
      
          @Bean(name = "dynamicDataSource")
          @Primary
          public DynamicDataSource dataSource(DataSource masterDataSource)
          {
              Map<Object, Object> targetDataSources = new HashMap<>();
              targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
      //        setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");
              setDataSource(targetDataSources, DataSourceType.DB2.name(), "db2DataSource");
              return new DynamicDataSource(masterDataSource, targetDataSources);
          }
      
          /**
           * 設置數據源
           * 
           * @param targetDataSources 備選數據源集合
           * @param sourceName 數據源名稱
           * @param beanName bean名稱
           */
          public void setDataSource(Map<Object, Object> targetDataSources, String sourceName, String beanName)
          {
              try
              {
                  DataSource dataSource = SpringUtils.getBean(beanName);
                  targetDataSources.put(sourceName, dataSource);
              }
              catch (Exception e)
              {
                  e.printStackTrace();
              }
          }
      
          /**
           * 去除監控頁面底部的廣告
           */
          @SuppressWarnings({ "rawtypes", "unchecked" })
          @Bean
          @ConditionalOnProperty(name = "spring.datasource.druid.statViewServlet.enabled", havingValue = "true")
          public FilterRegistrationBean removeDruidFilterRegistrationBean(DruidStatProperties properties)
          {
              // 獲取web監控頁面的參數
              DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
              // 提取common.js的配置路徑
              String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*";
              String commonJsPattern = pattern.replaceAll("\\*", "js/common.js");
              final String filePath = "support/http/resources/js/common.js";
              // 創建filter進行過濾
              Filter filter = new Filter()
              {
                  @Override
                  public void init(javax.servlet.FilterConfig filterConfig) throws ServletException
                  {
                  }
      
                  @Override
                  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                          throws IOException, ServletException
                  {
                      chain.doFilter(request, response);
                      // 重置緩沖區,響應頭不會被重置
                      response.resetBuffer();
                      // 獲取common.js
                      String text = Utils.readFromResource(filePath);
                      // 正則替換banner, 除去底部的廣告信息
                      text = text.replaceAll("<a.*?banner\"></a><br/>", "");
                      text = text.replaceAll("powered.*?shrek.wang</a>", "");
                      response.getWriter().write(text);
                  }
      
                  @Override
                  public void destroy()
                  {
                  }
              };
              FilterRegistrationBean registrationBean = new FilterRegistrationBean();
              registrationBean.setFilter(filter);
              registrationBean.addUrlPatterns(commonJsPattern);
              return registrationBean;
          }
      }
      

        缺點:需要兩個數據庫都正常才能啟動項目,增加耦合性。查詢少的情況下可以建立臨時連接

      posted @ 2025-10-16 15:09  了悟  閱讀(0)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲国产日韩欧美一区二区三区| 亚洲一区二区国产av| 久久久久久久久久久免费精品| 国产精品国产高清国产一区| 亚洲中文字幕无码一区无广告 | 少妇高潮尖叫黑人激情在线 | 日韩一区二区三区日韩精品| 人妻少妇久久久久久97人妻| 日韩伦理片一区二区三区| 即墨市| 精品偷自拍另类精品在线| 欧美变态另类zozo| 亚洲国产精品综合色在线| 精品日韩人妻中文字幕| av色国产色拍| 人妻伦理在线一二三区| 亚洲大成色www永久网站动图| 熟女精品国产一区二区三区| 国内精品一区二区不卡| 末成年娇小性色xxxxx| 国产亚洲精品AA片在线爽| 久久国内精品一国内精品| 国产在线中文字幕精品| 人人入人人爱| 熟女丝袜潮喷内裤视频网站| 国产精品熟女亚洲av麻豆| 亚洲成av人片无码天堂下载| 国偷自产一区二区三区在线视频| 香蕉久久久久久av成人| 国产高清不卡视频| 男人天堂亚洲天堂女人天堂| 亚洲AV美女在线播放啊| 日本一道一区二区视频| 水蜜桃精品综合视频在线| 亚洲国产成人av在线观看| 秋霞鲁丝片av无码少妇| 好硬好湿好爽再深一点动态图视频 | 中文字幕成人精品久久不卡| 久久精品国产99国产精品澳门| 国产精品福利片在线观看| 精品无码av无码免费专区|