關于springboot配置druid數(shù)據(jù)源不生效問題(踩坑記)
pom文件
如果你的springboot項目要用到druid,那么這三個依賴必不可少:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <!--Druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency> <!--log4j--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
我踩到的第一個坑就踩到這了。當時我沒有引入druid-spring-boot-starter這個依賴,所以在測試的時候就出了問題,最后還是查找了資料才解決。下面踩的坑就更加離譜了。
踩坑經(jīng)歷與解決方案
起初,我的yml配置文件是這樣寫的:
spring: datasource: username: root password: bugeinikan url: jdbc:mysql://localhost:3306/2021summer?useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true
這看起來毫無毛病,而且idea也并沒有報錯。
然后我們把數(shù)據(jù)源添加到容器中,DruidConfig類代碼如下:
@Configuration public class DruidConfig { @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druidDataSource() { return new DruidDataSource(); } }
編寫測試類,測試程類代碼如下:
@SpringBootTest class ApplicationTests { @Autowired DataSource dataSource; @Test void contextLoads() throws SQLException { System.out.println(dataSource.getClass()); //獲得連接 Connection connection = dataSource.getConnection(); System.out.println(connection); DruidDataSource druidDataSource = (DruidDataSource) dataSource; System.out.println("druidDataSource 數(shù)據(jù)源最大連接數(shù):" + druidDataSource.getMaxActive()); System.out.println("druidDataSource 數(shù)據(jù)源初始化連接數(shù):" + druidDataSource.getInitialSize()); //關閉連接 connection.close(); } }
輸出結果:
class com.alibaba.druid.pool.DruidDataSource
2021-09-24 16:12:52.689 INFO 4408 — [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
com.mysql.cj.jdbc.ConnectionImpl@7b96de8d
druidDataSource 數(shù)據(jù)源最大連接數(shù):8
druidDataSource 數(shù)據(jù)源初始化連接數(shù):0
程序看上去毫無問題,可是輸出的結果卻與自己設置的不同。我們再來打斷點具體看一下:
可以看到,在yml文件中,對數(shù)據(jù)源的username、password、url和driverClass配置都是生效的。
再往下看:
yml文件中,設置的maxActive和maxWait明明是20和60000,在這里顯示的卻是默認的屬性,這說明我們在yml文件中寫的spring.datasource.druid配置并沒有生效,抱著試一試的態(tài)度,我對yml文件進行了如下的修改:
spring: datasource: username: root password: bugeinikan url: jdbc:mysql://localhost:3306/2021summer?useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true
這時,idea就給我報出無法解析,如圖:
不管它了,死馬也要當活馬醫(yī),我們啟動測試程序,運行結果:
class com.alibaba.druid.pool.DruidDataSource
2021-09-24 16:19:45.095 INFO 11428 — [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
com.mysql.cj.jdbc.ConnectionImpl@67e25252
druidDataSource 數(shù)據(jù)源最大連接數(shù):20
druidDataSource 數(shù)據(jù)源初始化連接數(shù):5
這次輸出的居然和我們配置的一樣,在后面的斷點測試中,各項屬性也都和配置的一樣。
不得不說,這次真是被idea坑慘了,剛開始以為是注入失敗的問題,然后還查了很多資料。我的springboot版本是2.5.4,希望這個文章可以幫助那些和我一樣踩坑的人。
到此這篇關于springboot配置druid數(shù)據(jù)源不生效問題的文章就介紹到這了,更多相關springboot配置druid數(shù)據(jù)源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- SpringBoot集成Druid實現(xiàn)多數(shù)據(jù)源的兩種方式
- SpringBoot整合Mybatis-Plus+Druid實現(xiàn)多數(shù)據(jù)源配置功能
- springboot mybatis druid配置多數(shù)據(jù)源教程
- 使用springboot+druid雙數(shù)據(jù)源動態(tài)配置操作
- springboot配置多數(shù)據(jù)源并集成Druid和mybatis的操作
- SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點
- Springboot mybatis plus druid多數(shù)據(jù)源解決方案 dynamic-datasource的使用詳解
- SpringBoot整合Druid數(shù)據(jù)源過程詳解
- 通過springboot+mybatis+druid配置動態(tài)數(shù)據(jù)源
- springboot 動態(tài)數(shù)據(jù)源的實現(xiàn)方法(Mybatis+Druid)
- Spring Boot+Mybatis+Druid+PageHelper實現(xiàn)多數(shù)據(jù)源并分頁的方法
- 詳解Spring Boot整合Mybatis實現(xiàn) Druid多數(shù)據(jù)源配置
- spring使用xml方式整合Druid數(shù)據(jù)源連接池
相關文章
JAVA核心知識之ConcurrentHashMap源碼分析
這篇文章主要介紹了JAVA核心知識之ConcurrentHashMap源碼分析,想了解ConcurrentHashMap的同學一定要看啊2021-04-04Java框架Quartz中API、Jobs和Trigger詳解
這篇文章主要介紹了Java框架Quartz中API、Jobs和Trigger詳解,JobDetail?對象是在將?job?加入?scheduler?時,由客戶端程序(你的程序)創(chuàng)建的,它包含?job?的各種屬性設置,以及用于存儲?job?實例狀態(tài)信息的?JobDataMap,需要的朋友可以參考下2023-11-11java書店系統(tǒng)畢業(yè)設計 用戶模塊(3)
這篇文章主要介紹了java書店系統(tǒng)畢業(yè)設計,第三步系統(tǒng)總體設計,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10SSH框架網(wǎng)上商城項目第26戰(zhàn)之訂單支付后發(fā)送短信提醒
這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第26戰(zhàn)之訂單支付后發(fā)送短信提醒,感興趣的小伙伴們可以參考一下2016-06-06spring中的注解@@Transactional失效的場景代碼演示
這篇文章主要介紹了spring中的注解@@Transactional失效的場景代碼演示,@Transactional注解是Spring框架提供的用于聲明事務的注解,作用于類和方法上,需要的朋友可以參考下2024-01-01