中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

druid中怎么配置數據連接池

發布時間:2021-07-13 11:03:27 來源:億速云 閱讀:215 作者:Leah 欄目:大數據

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

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:
  ####整合數據庫層
  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:
      # 初始連接數
      initialSize: 5
      # 最小連接池數量
      minIdle: 10
      # 最大連接池數量
      maxActive: 20
      # 配置獲取連接等待超時的時間
      maxWait: 60000
      # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一個連接在池中最小生存的時間,單位是毫秒
      minEvictableIdleTimeMillis: 300000
      # 配置一個連接在池中最大生存的時間,單位是毫秒
      maxEvictableIdleTimeMillis: 900000
      # 配置檢測連接是否有效
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      webStatFilter: 
        enabled: true
      statViewServlet:
        enabled: true
        # 設置白名單,不填則允許所有訪問
        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 配置

	// 初始連接數
	private int initialSize;
	// 最小連接池數量
	private int minIdle;

	// 最大連接池數量
	private int maxActive;
	// 配置獲取連接等待超時的時間
	private int maxWait;
	// 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
	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);

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

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

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

}

DataSourceConfig.java 數據源配置

@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中怎么配置數據連接池,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿克苏市| 延寿县| 新泰市| 渭源县| 工布江达县| 鞍山市| 昌江| 吴江市| 隆德县| 渭南市| 凭祥市| 桐柏县| 油尖旺区| 稷山县| 于都县| 雷山县| 平顶山市| 嘉兴市| 张家港市| 讷河市| 枣强县| 互助| 苍山县| 宜都市| 汝州市| 宁强县| 习水县| 长岛县| 民丰县| 恩平市| 巴楚县| 丘北县| 沙雅县| 霞浦县| 黄龙县| 噶尔县| 界首市| 黔东| 高州市| 西峡县| 皮山县|