溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

druid中怎么配置數(shù)據(jù)連接池

發(fā)布時間:2021-07-13 11:03:27 來源:億速云 閱讀:205 作者:Leah 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)druid中怎么配置數(shù)據(jù)連接池,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

springboot 項目

pom.xml druid 部分
	<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.21</version>
		</dependency>
application.xml druid 部分
spring:
  ####整合數(shù)據(jù)庫層
  datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
      name: demo
      url: jdbc:mysql://127.0.0.1:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      username: root
      password: 123456
      type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 初始連接數(shù)
      initialSize: 5
      # 最小連接池數(shù)量
      minIdle: 10
      # 最大連接池數(shù)量
      maxActive: 20
      # 配置獲取連接等待超時的時間
      maxWait: 60000
      # 配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一個連接在池中最小生存的時間,單位是毫秒
      minEvictableIdleTimeMillis: 300000
      # 配置一個連接在池中最大生存的時間,單位是毫秒
      maxEvictableIdleTimeMillis: 900000
      # 配置檢測連接是否有效
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      webStatFilter: 
        enabled: true
      statViewServlet:
        enabled: true
        # 設(shè)置白名單,不填則允許所有訪問
        allow:
        url-pattern: /druid/*
        # 控制臺管理用戶名和密碼
        login-username: easy
        login-password: 1
      filter:
        stat:
          enabled: true
          # 慢SQL記錄
          log-slow-sql: true
          slow-sql-millis: 20000
          merge-sql: true
        wall:
          config:
            multi-statement-allow: true

DruidDataSourceDecorator.java 讀取yaml 配置,修飾 DataSource

@Configuration
@ConfigurationProperties(prefix = "spring.datasource.druid")
public class DruidDataSourceDecorator {

	// 讀取 Druid 配置

	// 初始連接數(shù)
	private int initialSize;
	// 最小連接池數(shù)量
	private int minIdle;

	// 最大連接池數(shù)量
	private int maxActive;
	// 配置獲取連接等待超時的時間
	private int maxWait;
	// 配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒
	private int timeBetweenEvictionRunsMillis;
	// 配置一個連接在池中最小生存的時間,單位是毫秒
	private int minEvictableIdleTimeMillis;
	// 配置一個連接在池中最大生存的時間,單位是毫秒
	private int maxEvictableIdleTimeMillis;
	// 配置檢測連接是否有效
	private String validationQuery;
	//
	private boolean testWhileIdle;
	//
	private boolean testOnBorrow;
	//
	private boolean testOnReturn;

  省略 set、get ...

	public DruidDataSource decorat(DruidDataSource source) {

		/** 配置初始化大小、最小、最大 */
		source.setInitialSize(initialSize);
		source.setMaxActive(maxActive);
		source.setMinIdle(minIdle);

		/** 配置獲取連接等待超時的時間 */
		source.setMaxWait(maxWait);

		/** 配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒 */
		source.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);

		/** 配置一個連接在池中最小、最大生存的時間,單位是毫秒 */
		source.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
		source.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis);

		/**
		 * 用來檢測連接是否有效的sql,要求是一個查詢語句,常用select
		 * 'x'。如果validationQuery為null,testOnBorrow、testOnReturn、testWhileIdle都不會起作用。
		 */
		source.setValidationQuery(validationQuery);
		/**
		 * 建議配置為true,不影響性能,并且保證安全性。申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執(zhí)行validationQuery檢測連接是否有效。
		 */
		source.setTestWhileIdle(testWhileIdle);
		/** 申請連接時執(zhí)行validationQuery檢測連接是否有效,做了這個配置會降低性能。 */
		source.setTestOnBorrow(testOnBorrow);
		/** 歸還連接時執(zhí)行validationQuery檢測連接是否有效,做了這個配置會降低性能。 */
		source.setTestOnReturn(testOnReturn);
		return source;
	}

}

DataSourceConfig.java 數(shù)據(jù)源配置

@Configuration
public class DataSourceConfig {

	// 修飾一下 DataSource
	@Autowired
	private DruidDataSourceDecorator decorator ;
	
	@Bean
	@Primary
	@ConfigurationProperties(prefix = "spring.datasource")
	DataSource dataSource() {
		DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
	
		return decorator.decorat(dataSource);
	}
}

mybaties 配置

@Configuration
@MapperScan(basePackages = "com.xxx.mapper", sqlSessionTemplateRef = "sqlSessionTemplate")
public class HySessionFactory {

	@Resource(name = "dataSource")
	DataSource dataSource;

	SqlSessionFactory hySqlSessionFactory() {
		SqlSessionFactory sessionFactory = null;
		try {
			SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
			bean.setDataSource(dataSource);
			// 掃描的XML
			bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
			 
			sessionFactory = bean.getObject();
		} catch (Exception e) {
			e.printStackTrace();
		}
 		return sessionFactory;
	}

	@Bean
	SqlSessionTemplate sqlSessionTemplate() {

		return new SqlSessionTemplate(sqlSessionFactory());
	}

}

以上就是druid中怎么配置數(shù)據(jù)連接池,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI