druid 多数据源_Druid连接池的使用以及注意事项
Druid連接池其實(shí)在網(wǎng)上一找一大堆文章,講實(shí)話這里也只是作為自己記錄下使用如何使用這個(gè)連接池。好的,廢話不多說。
什么是Druid連接池?
Druid首先是一個(gè)數(shù)據(jù)庫(kù)連接池。Druid連接池是阿里巴巴開源的數(shù)據(jù)庫(kù)連接池項(xiàng)目。Druid連接池為監(jiān)控而生,內(nèi)置強(qiáng)大的監(jiān)控功能,監(jiān)控特性不影響性能。內(nèi)置了StatFilter功能,能采集非常完備的連接池執(zhí)行信息,Druid連接池內(nèi)置了一個(gè)監(jiān)控頁面,提供了非常完備的監(jiān)控信息,可以快速診斷系統(tǒng)的瓶頸。
開始使用
我們簡(jiǎn)單的建立一個(gè)SpringBoot項(xiàng)目,引入Druid連接池。
<!--實(shí)現(xiàn)對(duì) Druid 連接池的自動(dòng)化配置--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.21</version></dependency> <!-- <dependency>--> <!-- <groupId>com.alibaba</groupId>--> <!-- <artifactId>druid</artifactId>--> <!-- <version>1.0.18</version>--> <!-- </dependency>-->druid-spring-boot-starter實(shí)現(xiàn)對(duì) Druid 連接池的自動(dòng)化配置,在application中進(jìn)行配置
spring:application:name: druidDemodatasource:url: jdbc:mysql://rm-xxxxxxx.mysql.rds.aliyuncs.com/luu_mall?useSSL=false&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driverusername: xxx # 數(shù)據(jù)庫(kù)賬號(hào)password: xxx@ # 數(shù)據(jù)庫(kù)密碼type: com.alibaba.druid.pool.DruidDataSource # 設(shè)置類型為 DruidDataSource# Druid 自定義配置,對(duì)應(yīng) DruidDataSource 中的 setting 方法的屬性druid: # 設(shè)置 Druid 連接池的自定義配置。然后 DruidDataSourceAutoConfigure 會(huì)自動(dòng)化配置 Druid 連接池。min-idle: 0 # 池中維護(hù)的最小空閑連接數(shù),默認(rèn)為 0 個(gè)。max-active: 20 # 池中最大連接數(shù),包括閑置和使用中的連接,默認(rèn)為 8 個(gè)。filter:stat: # 配置 StatFilter ,對(duì)應(yīng)文檔 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilterlog-slow-sql: true # 開啟慢查詢記錄slow-sql-millis: 5000 # 慢 SQL 的標(biāo)準(zhǔn),單位:毫秒merge-sql: true # SQL合并配置stat-view-servlet: # 配置 StatViewServlet ,對(duì)應(yīng)文檔 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AEenabled: true # 是否開啟 StatViewServletlogin-username: root # 賬號(hào)login-password: root # 密碼其他的什么mapper啥的配置就不說了,相信給位大佬不用說都知道,畢竟都是經(jīng)常寫的東西。
@SpringBootTest寫個(gè)測(cè)試類執(zhí)行以下就知道咯。
然后我們看下監(jiān)控臺(tái),訪問http://127.0.0.1:8080/druid/datasource.html登錄后
奈斯,以后老大要我查看慢sql就用這個(gè)了。
多數(shù)據(jù)源配置
以上呢是配置的單數(shù)據(jù)源,那么有些場(chǎng)景呢需要使用到多數(shù)據(jù)源,這里說下多數(shù)據(jù)源druid怎么配置的。
spring:application:name: druidDemodatasource:mall:url: jdbc:mysql://rm-wz9yy0528x91z1iqdco.mysql.rds.aliyuncs.com/luu_mall?useSSL=false&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driverusername: root # 數(shù)據(jù)庫(kù)賬號(hào)password: root0319@ # 數(shù)據(jù)庫(kù)密碼type: com.alibaba.druid.pool.DruidDataSource # 設(shè)置類型為 DruidDataSourcemin-idle: 0 # 池中維護(hù)的最小空閑連接數(shù),默認(rèn)為 0 個(gè)。max-active: 20 # 池中最大連接數(shù),包括閑置和使用中的連接,默認(rèn)為 8 個(gè)。# 用戶數(shù)據(jù)源配置users:url: jdbc:mysql://rm-wz9yy0528x91z1iqdco.mysql.rds.aliyuncs.com/luu_user_center?useSSL=false&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driverusername: root # 數(shù)據(jù)庫(kù)賬號(hào)password: root0319@ # 數(shù)據(jù)庫(kù)密碼type: com.alibaba.druid.pool.DruidDataSource # 設(shè)置類型為 DruidDataSource# Druid 自定義配置,對(duì)應(yīng) DruidDataSource 中的 setting 方法的屬性min-idle: 0 # 池中維護(hù)的最小空閑連接數(shù),默認(rèn)為 0 個(gè)。max-active: 20 # 池中最大連接數(shù),包括閑置和使用中的連接,默認(rèn)為 8 個(gè)。# Druid 自定義配置,對(duì)應(yīng) DruidDataSource 中的 setting 方法的屬性druid: # 設(shè)置 Druid 連接池的自定義配置。然后 DruidDataSourceAutoConfigure 會(huì)自動(dòng)化配置 Druid 連接池。filter:stat: # 配置 StatFilter ,對(duì)應(yīng)文檔 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilterlog-slow-sql: true # 開啟慢查詢記錄slow-sql-millis: 5000 # 慢 SQL 的標(biāo)準(zhǔn),單位:毫秒merge-sql: true # SQL合并配置stat-view-servlet: # 配置 StatViewServlet ,對(duì)應(yīng)文檔 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AEenabled: true # 是否開啟 StatViewServletlogin-username: root # 賬號(hào)login-password: root # 密碼配置類
@Configuration public class DataSourceConfig {/*** 創(chuàng)建 orders 數(shù)據(jù)源*/@Primary@Bean(name = "mallDataSource")@ConfigurationProperties(prefix = "spring.datasource.mall") // 讀取 spring.datasource.mall配置到 HikariDataSource 對(duì)象public DataSource ordersDataSource() {return DruidDataSourceBuilder.create().build();}/*** 創(chuàng)建 users 數(shù)據(jù)源*/@Bean(name = "usersDataSource")@ConfigurationProperties(prefix = "spring.datasource.users")public DataSource usersDataSource() {return DruidDataSourceBuilder.create().build();}}測(cè)試類中測(cè)試方法
private Logger logger = LoggerFactory.getLogger(DruidDemoApplicationTests.class);@Resource(name = "mallDataSource")private DataSource ordersDataSource;@Resource(name = "usersDataSource")private DataSource usersDataSource;@Testpublic void test() {// orders 數(shù)據(jù)源logger.info("[run][獲得數(shù)據(jù)源:{}]", ordersDataSource.getClass());// users 數(shù)據(jù)源logger.info("[run][獲得數(shù)據(jù)源:{}]", usersDataSource.getClass());int a = testMapper.test();System.out.println(a);}這樣就等于配置了多個(gè)數(shù)據(jù)源,具體的怎么用呢就要看具體的場(chǎng)景了。
其實(shí)多數(shù)據(jù)源的配置常用的有三種方式:
擴(kuò)展Spring的AbstractRoutingDataSource 通過Mybatis 配置不同的 Mapper 使用不同的 SqlSessionTemplate 分庫(kù)分表中間件,比如Sharding-JDBC 、Mycat等。這里就不細(xì)說咯,后面我們用到了再來記錄下使用過程。
總結(jié)
以上是生活随笔為你收集整理的druid 多数据源_Druid连接池的使用以及注意事项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python排课问题_排课问题分析
- 下一篇: requestanimationfram