一、引入相關的包,剛開始沒引入log4j包,一直報錯。css
<!--druid包--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.18</version> </dependency> <!--druid使用的日誌包--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
二、添加druid相關的屬性配置,具體各屬性的意思,能夠找官網或百度上去搜。html
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/SpringBoot?useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: root type: com.alibaba.druid.pool.DruidDataSource initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT1FROMDUAL testWhileIdle: true testOnBorrow: false testOnReturn: false filters: stat,wall,log4j logSlowSql: true
三、將DruidConfig配置類注入到spring boot中java
@Configuration public class DruidConfiguration { private static final String DB_PREFIX = "spring.datasource"; //讀取相關的屬性配置 @ConfigurationProperties(prefix = DB_PREFIX) @Bean public DataSource dataSource(){ return new DruidDataSource(); } //配置一個管理後臺的Servlet,配置Druid的監控 @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*"); Map<String,String> initParams = new HashMap<String, String>(); initParams.put("loginUsername","admin"); initParams.put("loginPassword","123456"); bean.setInitParameters(initParams); return bean; } //配置一個web監控的filter @Bean public FilterRegistrationBean webStatFilter(){ FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setFilter(new WebStatFilter()); Map<String,String> initParams = new HashMap<>(); initParams.put("exclusions","*.js,*.css,/druid/*"); bean.setInitParameters(initParams); bean.setUrlPatterns(Arrays.asList("/*")); return bean; } }
運行便可。mysql
均源於阿里參考:https://github.com/alibaba/druid/tree/master/druid-spring-boot-startergit
一、在 Spring Boot 項目中加入druid-spring-boot-starter
依賴github
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency>
二、添加配置web
spring.datasource.url= spring.datasource.username= spring.datasource.password= # ...其餘配置(可選,不是必須的,使用內嵌數據庫的話上述三項也可省略不填)
Druid Spring Boot Starter 配置屬性的名稱徹底遵守 Druid,你能夠經過 Spring Boot 配置文件來配置Druid數據庫鏈接池和監控,若是沒有配置則使用默認值。spring
spring.datasource.druid.url= # 或spring.datasource.url= spring.datasource.druid.username= # 或spring.datasource.username= spring.datasource.druid.password= # 或spring.datasource.password= spring.datasource.druid.driver-class-name= #或 spring.datasource.driver-class-name=
spring.datasource.druid.initial-size= spring.datasource.druid.max-active= spring.datasource.druid.min-idle= spring.datasource.druid.max-wait= spring.datasource.druid.pool-prepared-statements= spring.datasource.druid.max-pool-prepared-statement-per-connection-size= spring.datasource.druid.max-open-prepared-statements= #和上面的等價 spring.datasource.druid.validation-query= spring.datasource.druid.validation-query-timeout= spring.datasource.druid.test-on-borrow= spring.datasource.druid.test-on-return= spring.datasource.druid.test-while-idle= spring.datasource.druid.time-between-eviction-runs-millis= spring.datasource.druid.min-evictable-idle-time-millis= spring.datasource.druid.max-evictable-idle-time-millis= spring.datasource.druid.filters= #配置多個英文逗號分隔 ....//more
# WebStatFilter配置,說明請參考Druid Wiki,配置_配置WebStatFilter spring.datasource.druid.web-stat-filter.enabled= #是否啓用StatFilter默認值true spring.datasource.druid.web-stat-filter.url-pattern= spring.datasource.druid.web-stat-filter.exclusions= spring.datasource.druid.web-stat-filter.session-stat-enable= spring.datasource.druid.web-stat-filter.session-stat-max-count= spring.datasource.druid.web-stat-filter.principal-session-name= spring.datasource.druid.web-stat-filter.principal-cookie-name= spring.datasource.druid.web-stat-filter.profile-enable= # StatViewServlet配置,說明請參考Druid Wiki,配置_StatViewServlet配置 spring.datasource.druid.stat-view-servlet.enabled= #是否啓用StatViewServlet默認值true spring.datasource.druid.stat-view-servlet.url-pattern= spring.datasource.druid.stat-view-servlet.reset-enable= spring.datasource.druid.stat-view-servlet.login-username= spring.datasource.druid.stat-view-servlet.login-password= spring.datasource.druid.stat-view-servlet.allow= spring.datasource.druid.stat-view-servlet.deny= # Spring監控配置,說明請參考Druid Github Wiki,配置_Druid和Spring關聯監控配置 spring.datasource.druid.aop-patterns= # Spring監控AOP切入點,如x.y.z.service.*,配置多個英文逗號分隔
Druid Spring Boot Starter 不只限於對以上配置屬性提供支持,DruidDataSource
內提供setter
方法的可配置屬性都將被支持。你能夠參考WIKI文檔或經過IDE輸入提示來進行配置。配置文件的格式你能夠選擇.properties
或.yml
,效果是同樣的,在配置較多的狀況下推薦使用.yml
。sql
注入配置類數據庫
@Configuration @ConditionalOnClass(com.alibaba.druid.pool.DruidDataSource.class) @ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.alibaba.druid.pool.DruidDataSource", matchIfMissing = true) public class DruidDataSource { @Bean @ConfigurationProperties("spring.datasource.druid") public DataSource dataSourceOne() { return DruidDataSourceBuilder.create().build(); } }
spring.datasource.url= spring.datasource.username= spring.datasource.password= # Druid 數據源配置,繼承spring.datasource.* 配置,相同則覆蓋 ... spring.datasource.druid.initial-size=5 spring.datasource.druid.max-active=5 ... # Druid 數據源 1 配置,繼承spring.datasource.druid.* 配置,相同則覆蓋 ... spring.datasource.druid.one.max-active=10 spring.datasource.druid.one.max-wait=10000 ... # Druid 數據源 2 配置,繼承spring.datasource.druid.* 配置,相同則覆蓋 ... spring.datasource.druid.two.max-active=20 spring.datasource.druid.two.max-wait=20000 ...
強烈注意:Spring Boot 2.X 版本再也不支持配置繼承,多數據源的話每一個數據源的全部配置都須要單獨配置,不然配置不會生效
@Primary @Bean @ConfigurationProperties("spring.datasource.druid.one") public DataSource dataSourceOne(){ return DruidDataSourceBuilder.create().build(); } @Bean @ConfigurationProperties("spring.datasource.druid.two") public DataSource dataSourceTwo(){ return DruidDataSourceBuilder.create().build(); }
你能夠經過 spring.datasource.druid.filters=stat,wall,log4j ...
的方式來啓用相應的內置Filter,不過這些Filter都是默認配置。若是默認配置不能知足你的需求,你能夠放棄這種方式,經過配置文件來配置Filter,下面是例子。
# 配置StatFilter spring.datasource.druid.filter.stat.db-type=h2 spring.datasource.druid.filter.stat.log-slow-sql=true spring.datasource.druid.filter.stat.slow-sql-millis=2000 # 配置WallFilter spring.datasource.druid.filter.wall.enabled=true spring.datasource.druid.filter.wall.db-type=h2 spring.datasource.druid.filter.wall.config.delete-allow=false spring.datasource.druid.filter.wall.config.drop-table-allow=false # 其餘 Filter 配置再也不演示
目前爲如下 Filter 提供了配置支持,請參考文檔或者根據IDE提示(spring.datasource.druid.filter.*
)進行配置。
要想使自定義 Filter 配置生效須要將對應 Filter 的 enabled
設置爲 true
,Druid Spring Boot Starter 默認會啓用 StatFilter,你也能夠將其 enabled
設置爲 false
來禁用它。
網上摘抄:
# JDBC 配置(驅動類自動從url的mysql識別,數據源類型自動識別) # 或spring.datasource.url= spring.datasource.druid.url=jdbc:mysql://192.168.1.1:3306/test?useUnicode=true&characterEncoding=UTF8 # 或spring.datasource.username= spring.datasource.druid.username=root # 或spring.datasource.password= spring.datasource.druid.password=root #或 spring.datasource.driver-class-name= #spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver #鏈接池配置(一般來講,只須要修改initialSize、minIdle、maxActive # 若是用Oracle,則把poolPreparedStatements配置爲true,mysql能夠配置爲false。分庫分表較多的數據庫,建議配置爲false。removeabandoned不建議在生產環境中打開若是用SQL Server,建議追加配置) spring.datasource.druid.initial-size=1 spring.datasource.druid.max-active=20 spring.datasource.druid.min-idle=1 # 配置獲取鏈接等待超時的時間 spring.datasource.druid.max-wait=60000 #打開PSCache,而且指定每一個鏈接上PSCache的大小 spring.datasource.druid.pool-prepared-statements=true spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20 #spring.datasource.druid.max-open-prepared-statements=和上面的等價 spring.datasource.druid.validation-query=SELECT 'x' #spring.datasource.druid.validation-query-timeout= spring.datasource.druid.test-on-borrow=false spring.datasource.druid.test-on-return=false spring.datasource.druid.test-while-idle=true #配置間隔多久才進行一次檢測,檢測須要關閉的空閒鏈接,單位是毫秒 spring.datasource.druid.time-between-eviction-runs-millis=60000 #配置一個鏈接在池中最小生存的時間,單位是毫秒 spring.datasource.druid.min-evictable-idle-time-millis=300000 #spring.datasource.druid.max-evictable-idle-time-millis= #配置多個英文逗號分隔 spring.datasource.druid.filters= stat # WebStatFilter配置,說明請參考Druid Wiki,配置_配置WebStatFilter #是否啓用StatFilter默認值true spring.datasource.druid.web-stat-filter.enabled=true spring.datasource.druid.web-stat-filter.url-pattern=/* spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* spring.datasource.druid.web-stat-filter.session-stat-enable=false spring.datasource.druid.web-stat-filter.session-stat-max-count=1000 spring.datasource.druid.web-stat-filter.principal-session-name=admin spring.datasource.druid.web-stat-filter.principal-cookie-name=admin spring.datasource.druid.web-stat-filter.profile-enable=true # StatViewServlet配置 #展現Druid的統計信息,StatViewServlet的用途包括:1.提供監控信息展現的html頁面2.提供監控信息的JSON API #是否啓用StatViewServlet默認值true spring.datasource.druid.stat-view-servlet.enabled=true #根據配置中的url-pattern來訪問內置監控頁面,若是是上面的配置,內置監控頁面的首頁是/druid/index.html例如: #http://110.76.43.235:9000/druid/index.html #http://110.76.43.235:8080/mini-web/druid/index.html spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* #容許清空統計數據 spring.datasource.druid.stat-view-servlet.reset-enable=true spring.datasource.druid.stat-view-servlet.login-username=admin spring.datasource.druid.stat-view-servlet.login-password=admin #StatViewSerlvet展現出來的監控信息比較敏感,是系統運行的內部狀況,若是你須要作訪問控制,能夠配置allow和deny這兩個參數 #deny優先於allow,若是在deny列表中,就算在allow列表中,也會被拒絕。若是allow沒有配置或者爲空,則容許全部訪問 #配置的格式 #<IP> #或者<IP>/<SUB_NET_MASK_size>其中128.242.127.1/24 #24表示,前面24位是子網掩碼,比對的時候,前面24位相同就匹配,不支持IPV6。 spring.datasource.druid.stat-view-servlet.allow= spring.datasource.druid.stat-view-servlet.deny=128.242.127.1/24,128.242.128.1 # Spring監控配置,說明請參考Druid Github Wiki,配置_Druid和Spring關聯監控配置 spring.datasource.druid.aop-patterns= # Spring監控AOP切入點,如x.y.z.service.*,配置多個英文逗號分隔 #配置日誌 #不一樣目錄下的日誌可配置不一樣級別 info,error logging.level.com.euler: debug logging.level.org.springfromework.web: info