一、自定義整合Druid(非Starter方式)
適用于需要完全手動控制配置的場景
- 添加依賴(pom.xml)
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version> <!-- 使用最新版本 -->
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
- 創建配置類
@Configuration
public class DruidConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource")public DataSource druidDataSource() {return new DruidDataSource();}// 配置監控服務器@Beanpublic ServletRegistrationBean<StatViewServlet> statViewServlet() {ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");Map<String, String> initParams = new HashMap<>();initParams.put("loginUsername", "admin"); // 監控后臺登錄賬號initParams.put("loginPassword", "admin123"); initParams.put("allow", ""); // 允許所有訪問bean.setInitParameters(initParams);return bean;}// 配置過濾器@Beanpublic FilterRegistrationBean<WebStatFilter> webStatFilter() {FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<>(new WebStatFilter());bean.addUrlPatterns("/*");bean.addInitParameter("exclusions", "*.js,*.css,/druid/*");return bean;}
}
- application.yml配置
spring:datasource:url: jdbc:mysql://localhost:3306/testdbusername: rootpassword: root123driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource# 連接池配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1testWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: truefilters: stat,wall
二、使用Starter整合Druid(推薦)
官方提供的簡化方案,自動配置監控頁面
- 添加Starter依賴
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version>
</dependency>
- application.yml完整配置
spring:datasource:url: jdbc:mysql://localhost:3306/testdbusername: rootpassword: root123driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcedruid:# 連接池配置initial-size: 5min-idle: 5max-active: 20max-wait: 60000# 監控配置stat-view-servlet:enabled: trueurl-pattern: /druid/*login-username: adminlogin-password: admin123reset-enable: falseweb-stat-filter:enabled: trueurl-pattern: /*exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"# 防火墻配置filter:wall:config:multi-statement-allow: true
三、關鍵功能驗證
監控界面訪問:
- 訪問
http://localhost:8080/druid
- 使用配置的用戶名/密碼登錄
- 訪問
SQL監控:
@RestController public class TestController {@Autowiredprivate JdbcTemplate jdbcTemplate;@GetMapping("/users")public List<Map<String, Object>> getUsers() {return jdbcTemplate.queryForList("SELECT * FROM user");} }
四、配置優化建議
生產環境安全:
druid:stat-view-servlet:allow: 192.168.1.100 # 限制訪問IPdeny: 192.168.1.73
性能調優參數:
druid:max-wait: 1000validation-query: SELECT 1test-on-borrow: falsetest-on-return: falsetest-while-idle: true
啟用SQL防火墻:
druid:filter:wall:enabled: trueconfig:drop-table-allow: false
注意:使用Starter方式時,監控頁面默認路徑為
/druid/*
,如需修改可在配置中調整url-pattern
參數。兩種方式都支持完整的連接池參數配置,但Starter方式簡化了監控功能的集成。