From 0bf868d3cdf9226e178c076d3b588ed5207409a0 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期五, 24 十一月 2023 17:51:40 +0800
Subject: [PATCH] merge

---
 assess-framework/src/main/java/com/gkhy/assess/framework/config/DruidConfig.java |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)

diff --git a/assess-framework/src/main/java/com/gkhy/assess/framework/config/DruidConfig.java b/assess-framework/src/main/java/com/gkhy/assess/framework/config/DruidConfig.java
new file mode 100644
index 0000000..c3aa3c5
--- /dev/null
+++ b/assess-framework/src/main/java/com/gkhy/assess/framework/config/DruidConfig.java
@@ -0,0 +1,103 @@
+package com.gkhy.assess.framework.config;
+
+import cn.hutool.extra.spring.SpringUtil;
+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.gkhy.assess.common.enums.DataSourceTypeEnum;
+import com.gkhy.assess.framework.config.properties.DruidProperties;
+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 javax.servlet.*;
+import javax.sql.DataSource;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+@Configuration
+public class DruidConfig {
+
+    @Bean(name = "masterDataSource")
+    @ConfigurationProperties("spring.datasource.druid.master")
+    public DataSource masterDataSource(DruidProperties druidProperties){
+        DruidDataSource dataSource= DruidDataSourceBuilder.create().build();
+        return druidProperties.dataSource(dataSource);
+    }
+
+
+    @Bean(name = "slaveDataSource")
+    @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(DataSourceTypeEnum.MASTER.name(),masterDataSource);
+        setDataSource(targetDataSources, DataSourceTypeEnum.SLAVE.name(),"slaveDataSource");
+        return new DynamicDataSource(masterDataSource,targetDataSources);
+    }
+
+    /**
+     * 设置数据源
+     * @param targetDataSource 备选数据源集合
+     * @param sourceName   数据源名称
+     * @param beanName    bean名称
+     */
+    public void setDataSource(Map<Object,Object>targetDataSource,String sourceName,String beanName){
+
+        try {
+            DataSource dataSource = SpringUtil.getBean(beanName);
+            targetDataSource.put(sourceName, dataSource);
+        }catch (Exception e){
+
+        }
+    }
+
+    /**
+     * 去除监控页面底部的广告
+     * @param properties
+     * @return
+     */
+    @SuppressWarnings({ "rawtypes", "unchecked" })
+    @Bean
+    @ConditionalOnProperty(name="spring.datasource.druid.statViewServlet.enabled",havingValue = "true")
+    public FilterRegistrationBean removeDruidFilterRegistrationBean(DruidStatProperties properties){
+        DruidStatProperties.StatViewServlet config=properties.getStatViewServlet();
+        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=new Filter() {
+            @Override
+            public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+                filterChain.doFilter(servletRequest,servletResponse);
+                // 重置缓冲区,响应头不会被重置
+                servletResponse.resetBuffer();
+                // 获取common.js
+                String text= Utils.readFromResource(filePath);
+                text=text.replaceAll("<a.*?banner\"></a><br/>","");
+                text=text.replaceAll("powered.*?shrek.wang</a>","");
+                servletResponse.getWriter().write(text);
+            }
+        };
+
+
+        FilterRegistrationBean registrationBean=new FilterRegistrationBean<>();
+        registrationBean.setFilter(filter);
+        registrationBean.addUrlPatterns(commonJsPattern);
+        return registrationBean;
+
+    }
+}

--
Gitblit v1.9.2