本文將詳細介紹SpringCloud中配置中心或者啟動配置application.properties文件
如下配置文件:
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.url=jdbc:mysql://x.x.x.x:3306/databasename?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull spring.datasource.username=uname spring.datasource.password=pword spring.datasource.driverClassName=com.mysql.jdbc.Driver # 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=150 # 配置獲取連接等待超時的時間 spring.datasource.maxWait=60000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一個連接在池中最小生存的時間,單位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打開PSCache,並且指定每個連接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆 spring.datasource.filters=stat,log4j # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合並多個DruidDataSource的監控數據 #spring.datasource.useGlobalDataSourceStat=true
#redis配置 spring.redis.password=redispass spring.redis.port=6379 spring.redis.host=redis.${DOMAIN} spring.redis.expire=10 spring.redis.pool.max-active=1024 spring.redis.pool.max-wait=10000 spring.redis.pool.max-idle=200 spring.redis.pool.min-idle=50 spring.redis.timeout=10000 spring.redis.database=1 dialect=mysql hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000 #ribbon.ReadTimeout=120000 #ribbon.ConnectTimeout=120000 #切面日志開關,aspect.shortcircuit=true表示關閉,aspect.shortcircuit=false表示開啟,默認請配置為false,開啟日志切面 aspect.shortcircuit=false
#上傳文件的最大單個文件大小 spring.http.multipart.maxFileSize=5MB
#日志輸出級別 logging.level.com.baiwang.xxx=DEBUG
一、數據源配置 spring.datasource.XXX
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://x.x.x.x:3306/databasename?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull spring.datasource.username=uname spring.datasource.password=pword
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#以下為orcle
#spring.datasource.url=jdbc:oracle:thin:@oracle1.test.xxx.com:1521:testdb1
#spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
①首先,Spring Boot默認的數據源是org.apache.tomcat.jdbc.pool.DataSource
在實際開發中我們可能需要使用我們比較熟悉的數據源或者性能比比較高的數據源,比如Druid,那么很自然的我們就不能使用默認的數據源,這時候
spring.datasource.type就誕生了。
springboot對該屬性的支持情況:1.2版本不支持,1.3版本支持,1.4.0版本不支持,1.4.1重新支持
②其次,Druid是Java語言中最好的數據庫連接池,並且能夠提供強大的監控和擴展功能。
業界把 Druid 和 HikariCP 做對比后,雖說 HikariCP 的性能比 Druid 高,但是因為 Druid 包括很多維度的統計和分析功能,所以這也是大家都選擇使用它的原因。
③下面來說明如何在 Spring Boot 中配置使用Druid
1)添加Maven依賴 (或jar包)
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.20</version> </dependency>
2)配置數據源相關信息
# 數據庫訪問配置 # 主數據源,默認的 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 # 下面為連接池的補充設置,應用到上面所有數據源中 # 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 配置獲取連接等待超時的時間 spring.datasource.maxWait=60000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一個連接在池中最小生存的時間,單位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打開PSCache,並且指定每個連接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆 spring.datasource.filters=stat,wall,log4j # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合並多個DruidDataSource的監控數據 #spring.datasource.useGlobalDataSourceStat=true
3)這時候啟動應用就可以看到看到打印信息就是使用我們配置的數據源了:
[main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
4)數據庫訪問方式介紹
?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
?useUnicode=true&characterEncoding=utf-8&useSSL=false
如上配置示例:
useUnicode=true&characterEncoding=UTF-8 |
這個代表允許用戶自己設定數據庫編碼,設置為UTF-8 |
useOldAliasMetadataBehavior=true |
這個代表數據庫里面允許有別名 |
allowMultiQueries=true |
1)可以在sql語句后攜帶分號,實現多語句執行。 |
zeroDateTimeBehavior=convertToNull |
日期類型由於誤傳0000-00-00(這時默認拋出 |
useSSL=false |
MySQL在高版本需要指明是否進行SSL連接 |
SSL協議提供服務主要:
1)認證用戶服務器,確保數據發送到正確的服務器; .
2)加密數據,防止數據傳輸途中被竊取使用;
3)維護數據完整性,驗證數據在傳輸過程中是否丟失;
當前支持SSL協議兩層:
SSL記錄協議(SSL Record Protocol):建立靠傳輸協議(TCP)高層協議提供數據封裝、壓縮、加密等基本功能支持
SSL握手協議(SSL Handshake Protocol):建立SSL記錄協議用於實際數據傳輸始前通訊雙進行身份認證、協商加密算法、 交換加密密鑰等。
--------------------------------------------------------------------End-------------------------------------------------------------------------