springboot倾向于约定优于配置,所以大大简化了搭建项目的流程,包括各种数据源的配置,接下来就和大家分享下最近用到的巨杉数据源连接池的配置
1、现在配置文件中定义巨杉连接池的各种连接信息,至于每个参数代表的意义大家可以参考巨杉官网给出的连接池的配置
1 sdb.connectTimeout=500 2 sdb.maxAutoConnectRetry=0 3 sdb.maxCount=500 4 sdb.detalIncCount=20 5 sdb.maxIdelCount=20 6 sdb.keepAliveTimeout=0 7 sdb.checkInterval=60000 8 sdb.syncCoordIntercal=0 9 sdb.validateConntion=false 10 11 12 sdb.username=sdbadmin 13 sdb.password=sdbadmin
2、进行连接池的配置
1 package com.xbsafe.common.sequaioDB; 2 3 import java.util.Arrays; 4 import java.util.List; 5 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Qualifier; 8 import org.springframework.beans.factory.annotation.Value; 9 import org.springframework.boot.context.properties.ConfigurationProperties; 10 import org.springframework.context.annotation.Bean; 11 import org.springframework.context.annotation.Configuration; 12 import org.springframework.context.annotation.PropertySource; 13 import org.springframework.stereotype.Component; 14 15 import com.sequoiadb.net.ConfigOptions; 16 import com.sequoiadb.base.SequoiadbDatasource; 17 import com.sequoiadb.datasource.ConnectStrategy; 18 import com.sequoiadb.datasource.DatasourceOptions; 19 20 /** 21 * 巨杉数据库连接池配置类 22 * @author zhouliang 23 * @date 2017年9月20日 24 */ 25 @Component 26 @PropertySource("classpath:sequaiodb.properties") 27 public class SdbConfig { 28 @Value("${sdb.connectTimeout}") private String connectTimeout; 29 @Value("${sdb.maxAutoConnectRetry}") private int maxAutoConnectRetry; 30 @Value("${sdb.maxCount}") private int maxCount; 31 @Value("${sdb.detalIncCount}") private int detalIncCount; 32 @Value("${sdb.maxIdelCount}") private int maxIdelCount; 33 @Value("${sdb.keepAliveTimeout}") private int keepAliveTimeout; 34 @Value("${sdb.checkInterval}") private int checkInterval; 35 @Value("${sdb.syncCoordIntercal}") private int syncCoordIntercal; 36 @Value("${sdb.validateConntion}") private boolean validateConntion; 37 38 @Value("${sdb.username}") private String username; 39 @Value("${sdb.password}") private String password; 40 @Value("${sdb.serverlist}") private String serverlist; 41 42 43 @Bean(name="sdbDataSource") 44 @Autowired 45 public SequoiadbDatasource sequoiadbDatasource(@Qualifier("sdb.datasource.nwOpt")ConfigOptions nwOpt, 46 @Qualifier("sdb.datasource.dsOpt")DatasourceOptions dsOpt){ 47 List<String> serverList = Arrays.asList(serverlist.split(";")); 48 return new SequoiadbDatasource(serverList, username, password, nwOpt,dsOpt); 49 } 50 51 @Bean(name="sdb.datasource.nwOpt") 52 public ConfigOptions configOptions(){ 53 ConfigOptions nwOpt = new ConfigOptions(); 54 // nwOpt.setConnectTimeout(connectTimeout); 55 nwOpt.setMaxAutoConnectRetryTime(maxAutoConnectRetry); 56 return nwOpt; 57 } 58 @Bean(name="sdb.datasource.dsOpt") 59 public DatasourceOptions datasourceOptions(){ 60 DatasourceOptions dsOpt = new DatasourceOptions(); 61 dsOpt.setMaxCount(maxCount); // 连接池最多能提供500个连接。 62 dsOpt.setDeltaIncCount(detalIncCount); // 每次增加20个连接。 63 dsOpt.setMaxIdleCount(maxIdelCount); // 连接池空闲时,保留20个连接。 64 dsOpt.setKeepAliveTimeout(keepAliveTimeout); // 池中空闲连接存活时间。单位:毫秒。0表示不关心连接隔多长时间没有收发消息。 65 dsOpt.setCheckInterval(checkInterval); // 每隔60秒将连接池中多于MaxIdleCount限定的空闲连接关闭.并将存活时间过长(连接已停止收发超过keepAliveTimeout时间)的连接关闭。 66 dsOpt.setSyncCoordInterval(syncCoordIntercal); // 向catalog同步coord地址的周期。单位:毫秒。 67 dsOpt.setValidateConnection(validateConntion); // 连接出池时,是否检测连接的可用性,默认不检测。0表示不同步。 68 dsOpt.setConnectStrategy(ConnectStrategy.BALANCE); // 默认使用coord地址负载均衡的策略获取连接。 69 return dsOpt; 70 } 71 }