今天建項目的時候,使用springboot整合druid的時候啟動報錯:
springboot項目中提示報錯Cannot resolve configuration property 'spring.datasource.xxxx'
然后我就網上搜索資料,可以參考:
https://www.cnblogs.com/dxiaodang/p/14571590.html
主要原因還是要不要手動寫配置類,spring boot 的使用 auto幫我們封裝好了屬性值
描述如下:
- 作用是一樣的,都是連接池提供連接,里邊的配置參數都是一樣的;
- druid-spring-boot-starter只是在druid基礎上進行了一次封裝,專門用來整合spring-boot項目;
如果springboot項目想使用druid也是可以的,但是需要手動編寫配置類並注入到bean中,並加載對應的配置參數;但是不建議,明明有現成封裝好的jar,就直接使用就好了!!!
所以我后面改成了使用druid-spring-boot-starter依賴。
<!--改為stater的方式--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency>
並且在application.yml文件中配置如下內容:
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource # driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test01 username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver druid: # Druid數據源配置 # 初始連接數 initialSize: 5 # 最小連接池數量 minIdle: 10 # 最大連接池數量 maxActive: 20 # 配置獲取連接等待超時的時間 maxWait: 60000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一個連接在池中最小生存的時間,單位是毫秒 minEvictableIdleTimeMillis: 300000 # 配置一個連接在池中最大生存的時間,單位是毫秒 maxEvictableIdleTimeMillis: 900000 # 配置檢測連接是否有效 validationQuery: SELECT 1 #申請連接的時候檢測,如果空閑時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。 testWhileIdle: true #配置從連接池獲取連接時,是否檢查連接有效性,true每次都檢查;false不檢查。做了這個配置會降低性能。 testOnBorrow: false #配置向連接池歸還連接時,是否檢查連接有效性,true每次都檢查;false不檢查。做了這個配置會降低性能。 testOnReturn: false #打開PsCache,並且指定每個連接上PSCache的大小 poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 # 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆 filters: stat,wall,log4j #合並多個DruidDatasource的監控數據 useGlobalDataSourceStat: true #通過connectProperties屬性來打開mergesql功能羅慢sQL記錄 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500;
這樣就不需要單獨對DruidDatasource寫個配置類了。