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