package com.iailab.framework.datasource.config; import com.iailab.framework.datasource.core.filter.DruidAdRemoveFilter; import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.transaction.annotation.EnableTransactionManagement; /** * æ•°æ®åº“é…置类 * * @author iailab */ @AutoConfiguration @EnableTransactionManagement(proxyTargetClass = true) // å¯åŠ¨äº‹åŠ¡ç®¡ç† @EnableConfigurationProperties(DruidStatProperties.class) public class IailabDataSourceAutoConfiguration { /** * 创建 DruidAdRemoveFilter 过滤器,过滤 common.js 的广告 */ @Bean @ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true") public FilterRegistrationBean<DruidAdRemoveFilter> druidAdRemoveFilterFilter(DruidStatProperties properties) { // èŽ·å– druid web 监控页é¢çš„å‚æ•° DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); // æå– common.js çš„é…置路径 String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); // 创建 DruidAdRemoveFilter Bean FilterRegistrationBean<DruidAdRemoveFilter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new DruidAdRemoveFilter()); registrationBean.addUrlPatterns(commonJsPattern); return registrationBean; } }