今天在使用druid的時候,發現druid出現一系列故障。
廢話不多說,直接上零配置的yml代碼:
datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.*.Driver url: jdbc:oscar://127.0.0.1:6379/* username: sc password: 2019 initial-size: 10 min-idle: 10 max-active: 2000 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL validation-query-timeout: 60000 test-while-idle: true test-on-borrow: false test-on-return: false connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 web-stat-filter: enabled: true url-pattern: /* exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" session-stat-enable: true session-stat-max-count: 1000 principal-session-name: null principal-cookie-name: null profile-enable: true stat-view-servlet: enabled: true deny: null url-pattern: /druid/* reset-enable: true allow: 127.0.0.1 login-username: druid login-password: Love.TG filter: stat: # 開啓SQL監控 enabled: true log-slow-sql: true slow-sql-millis: 2000 merge-sql: true wall: config: multi-statement-allow: true drop-table-allow: false
發現SQL監控爲空,是因爲自己沒有打開stat的enable;
Spring監控配置:(但是這樣配置卻無法程序啓動了)
# Spring監控AOP切入點,如x.y.z.service.*,配置多個英文逗號分隔 aop-patterns: com.tty.service.*
在配置過程中採用了博文(https://blog.csdn.net/jianggujin/article/details/80752709)的配置方式,但是報如下異常:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
網上搜索別人說如下配置:(但我覺得不好就沒采用)
druid包請選用
druid-spring-boot-starter
後來選擇了博文(https://blog.csdn.net/likaya20/article/details/79047064)的配置方式:
import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.JdkRegexpMethodPointcut; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; /** * @author Love丶TG */ @Configuration public class DruidConfiguration { @Bean public DruidStatInterceptor druidStatInterceptor() { return new DruidStatInterceptor(); } @Bean @Scope("prototype") public JdkRegexpMethodPointcut druidStatPointcut() { JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut(); pointcut.setPattern("com.gkym.scpc.service.impl.*"); return pointcut; } @Bean public DefaultPointcutAdvisor druidStatAdvisor(DruidStatInterceptor druidStatInterceptor, JdkRegexpMethodPointcut druidStatPointcut) { DefaultPointcutAdvisor defaultPointAdvisor = new DefaultPointcutAdvisor(); defaultPointAdvisor.setPointcut(druidStatPointcut); defaultPointAdvisor.setAdvice(druidStatInterceptor); return defaultPointAdvisor; } }
本人親自測試通過。(感謝博主!!!)
再後來發現shiro全攔截會攔截druid靜態資源:
filterChainDefinitionMap.put("/static/**", "anon"); filterChainDefinitionMap.put("/swagger-ui.html","anon"); filterChainDefinitionMap.put("/swagger/**","anon"); filterChainDefinitionMap.put("/webjars/**", "anon"); filterChainDefinitionMap.put("/swagger-resources/**","anon"); filterChainDefinitionMap.put("/v2/**","anon"); filterChainDefinitionMap.put("/druid/**","anon");
也感謝網友各位大佬,一路暢通。