SpringBoot學習大綱
一、YAML語法
1.1.概述:
- 1.YAML
是一種數據序列化格式
; - 2.它是
以數據為中心
- 3.容易閱讀,容易與腳本語言交互,如下圖所示:
1.2.基本語法
- 1.key: value:
kv之間有空格
- 2.使用
縮進表示層級
關系 - 3.縮進時候
不可以使用tab鍵
,只可以使用空格
- 4.縮進的空格數量不重要,重要的是
相同層級
的元素只要在縮進后可以齊就可
以 - 5.屬性和值中:
大小寫敏感
- 6.
#
表示注釋 - 7.字符串不需要加引號:當
屬性中如果出現了某些特殊的字符
,就可以使用雙引號包裹起來作為字符解析
單引號會將\n作為字符串輸出
雙引號會將\n作為換行輸出
,雙引號會改變它的行為,作為換行,單引號不會改變它的行為(雙引號會轉義,單引不號會轉義
)
2.3.數據類型
- 1.字面量:單個的、不可再分的值:
date、boolean、string、number、null
k: v
- 2.對象:
鍵值對的集合。map、hash、set、object
行內寫法: k: {k1:v1,k2:v2,k3:v3}
#或k: k1: v1k2: v2k3: v3
- 3.數組:
一組按次序排列的值。array、list、queue
行內寫法: k: [v1,v2,v3]
#或者
k:- v1- v2 - v3
二、配置文件說明:
2.1.配置位置
- 1.SpringBoot 項目最重要也是最核心的配置文件就是
application.properties
- 所有的框架配置都可以在這個配置文件中說明
#SPRING CONFIG(ConfigFileApplicationListener)
spring.config.name =#配置文件名(默認 為 'application' )
spring.config.location =#配置文件的位置# 多環境配置文件激活屬性
spring.profiles.active=dev #加載 application-dev.properties 配置文件內容
application-dev.properties: #開發環境
application-test.properties: #測試環境
application-prod.properties: #生產環境#activemq
spring.activemq.broker-url #指定 ActiveMQ broker 的 URL,默認自動生成. spring.activemq.in-memory #是否是內存模式,默認為 true. spring.activemq.password #指定 broker 的密碼. spring.activemq.pooled #是否創建 PooledConnectionFactory ,而非
ConnectionFactory,默認 false
spring.activemq.user #指定 broker 的用戶.#aop
spring.aop.auto #是否支持@EnableAspectJAutoProxy,默認為: true
spring.aop.proxy-target-class #true 為使用 CGLIB 代理,false 為 JDK 代理,默認為 false#application
spring.application.admin.enabled #是否啟用 admin 特性,默認為: false
spring.application.admin.jmx-name #指定 admin MBean 的名稱,默認為:
org.springframework.boot:type=Admin,name=SpringApplication#artemis(HornetQ 捐獻給 apache 后的版本)
spring.artemis.embedded.cluster-password #指定集群的密碼,默認是啟動時隨機生成. spring.artemis.embedded.data-directory #指定 Journal 文件的目錄.如果不開始持
久化則不必要指定. spring.artemis.embedded.enabled #是否開啟內嵌模式,默認 true
spring.artemis.embedded.persistent #是否開啟 persistent store,默認 false. spring.artemis.embedded.queues #指定啟動時創建的隊列,多個用逗號分隔,默認: []
spring.artemis.embedded.server-id #指定 Server ID. 默認是一個自增的數字,
從 0 開始. spring.artemis.embedded.topics #指定啟動時創建的 topic,多個的話逗號分韓順平 Java 工程師隔,默認: []
spring.artemis.host #指定 Artemis broker 的 host. 默認: localhost
spring.artemis.mode # 指 定 Artemis 的 部 署 模 式 , 默 認 為
auto-detected(也可以為 native or embedded). spring.artemis.port #指定 Artemis broker 的端口,默認為: 61616#autoconfig
spring.autoconfigure.exclude #配置要排除的 Auto-configuration classes. #batch
spring.batch.initializer.enabled #是否在必要時創建 batch 表,默認為 true
spring.batch.job.enabled #是否在啟動時開啟 batch job,默認為 true
spring.batch.job.names #指定啟動時要執行的 job 的名稱,逗號分隔,默認所有 job 都會被執行
spring.batch.schema # 指 定 要 初 始 化 的 sql 語 句 路 徑 , 默認:classpath:org/springframework/batch/core/schema-@@platform@@.sql)
spring.batch.table-prefix #指定批量處理的表的前綴.#cookie、session 配置
server.session.cookie.comment #指定 session cookie 的 comment
server.session.cookie.domain #指定 session cookie 的 domain
server.session.cookie.http-only #是否開啟 HttpOnly. server.session.cookie.max-age #設定 session cookie 的最大 age. server.session.cookie.name #設定 Session cookie 的名稱. server.session.cookie.path #設定 session cookie 的路徑. server.session.cookie.secure #設定 session cookie 的“Secure” flag. server.session.persistent #重啟時是否持久化 session,默認 false
server.session.timeout #session 的超時時間
server.session.tracking-modes #設定 Session 的追蹤模式(cookie, url, ssl).#datasource
spring.dao.exceptiontranslation.enabled # 是 否 開 啟
PersistenceExceptionTranslationPostProcessor,默認為 true
spring.datasource.abandon-when-percentage-full #設定超時被廢棄的連接占到多少比例時要被關閉或上報
spring.datasource.allow-pool-suspension #使用 Hikari pool 時,是否允許連接池..................................
2.2.修改默認配置:
- 1.各 種 配 置 都 有 默 認 , 可 以 在 resources\application.properties 修 改 ,application.properties 文件我們可以手動創建
#默認 server.port=8080
server.port=10000
#比如: 默認 spring.servlet.multipart.max-file-size=1MB
#該屬性可以指定 springboot 上傳文件大小的限制
#默認配置最終都是映射到某個類上,比如這里配置會映射到 MultipartProperties
#把光標放在該屬性,ctrl+b 就可以定位該配置映射到的類
spring.servlet.multipart.max-file-size=10MB
2.3.常用配置
#端口號
server.port=10000
#應用的上下文路徑(項目路徑)
server.servlet.context-path=/allModel#指定 POJO 掃描包來讓 mybatis 自動掃描到自定義的 POJO
mybatis.type-aliases-package=com.cxs.allmodel.model
#指定 mapper.xml 的路徑
#(application 上配置了@MapperScan(掃面 mapper 類的路徑)和 pom.xml 中放行了 mapper.xml 后,
# 配 置 mapper-locations 沒 有 意 義 。 如 果 mapper 類 和 mapper.xml 不 在 同 一 個 路 徑 下 時 ,
mapper-locations 就有用了)
mybatis.mapper-locations=classpath:com/cxs/allmodel/mapper
#session 失效時間(單位 s)
spring.session.timeout=18000
#數據庫連接配置
#mysql 數據庫 url
mysql.one.jdbc-url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai&useSSL=false
#mysql 數據庫用戶名
mysql.one.username=
#數據庫密碼
mysql.one.password=
#線程池允許的最大連接數
mysql.one.maximum-pool-size=15
#日志打印:日志級別 trace<debug<info<warn<error<fatal 默認級別為 info,即默認打印 info 及其以
上級別的日志
#logging.level 設置日志級別,后面跟生效的區域,比如 root 表示整個項目,也可以設置為某個包下,
也可以具體到某個類名(日志級別的值不區分大小寫)
logging.level.com.cxs.allmodel.=debug
logging.level.com.cxs.allmodel.mapper=debug
logging.level.org.springframework.web=info
logging.level.org.springframework.transaction=info
logging.level.org.apache.ibatis=info
logging.level.org.mybatis=info
logging.level.com.github.pagehelper = info
logging.level.root=info
#日志輸出路徑
logging.file=/tmp/api/allmodel.log
#配置 pagehelper 分頁插件
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
#jackson 時間格式化
spring.jackson.serialization.fail-on-empty-beans=false
#指定日期格式,比如 yyyy-MM-dd HH:mm:ss,或者具體的格式化類的全限定名
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#指定日期格式化時區,比如 America/Los_Angeles 或者 GMT+10
spring.jackson.time-zone=GMT+8
#設置統一字符集
spring.http.encoding.charset=utf8
#redis 連接配置
# redis 所在主機 ip 地址
spring.redis.host=
#redis 服務器密碼
spring.redis.password=
#redis 服務器端口號
spring.redis.port=
#redis 數據庫的索引編號(0 到 15)
spring.redis.database=14
## 連接池的最大活動連接數量,使用負值無限制
#spring.redis.pool.max-active=8
#
## 連接池的最大空閑連接數量,使用負值表示無限數量的空閑連接
#spring.redis.pool.max-idle=8
#
## 連接池最大阻塞等待時間,使用負值表示沒有限制
#spring.redis.pool.max-wait=-1ms
#
## 最小空閑連接數量,使用正值才有效果
#spring.redis.pool.min-idle=0
#
## 是否啟用 SSL 連接. ##spring.redis.ssl=false
#
## 連接超時,毫秒為單位
#spring.redis.timeout= 18000ms
#
## 集群模式下,集群最大轉發的數量
#spring.redis.cluster.max-redirects=
#
## 集群模式下,逗號分隔的鍵值對(主機:端口)形式的服務器列表
#spring.redis.cluster.nodes=
#
## 哨兵模式下,Redis 主服務器地址
#spring.redis.sentinel.master=
#
## 哨兵模式下,逗號分隔的鍵值對(主機:端口)形式的服務器列表
#spring.redis.sentinel.nodes= 127.0.0.1:5050,127.0.0.1:5060
2.4.自定義配置
- 1.還可以在 properties 文件中自定義配置,通過
@Value("${}")
獲取對應屬性值
application.properties 文件
my.website=https://www.baidu.com
- 2.通過bean實例獲取配置文件中的值:
//某個 Bean
@Value("${my.website}")
private String bdUrl;
三、配置生效:
3.1.分析條件配置規則
- 1.下面是條件配置規則(
@Conditionalxxxxxxx
)來決定是否進行啟動的舉例:
3.2.修改SpringBoot的默認配置:
- 1.官網查看可以配置的屬性
- 2.SpringBoot默認會在底層配好所有的組件。@ConditionalOnMissingBean注解就實現了
如果用戶自己配置了就以用戶的優先
- 3.如下給容器中加入了文件上傳解析器:
@Bean@ConditionalOnBean(MultipartResolver.class) //容器中有這個類型組件@ConditionalOnMissingBean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME) //容器中沒有這個名字 multipartResolver 的組件public MultipartResolver multipartResolver(MultipartResolver resolver) {//給@Bean標注的方法傳入了對象參數,這個參數的值就會從容器中找。//SpringMVC multipartResolver。防止有些用戶配置的文件上傳解析器不符合規范// Detect if the user has created a MultipartResolver but named it incorrectlyreturn resolver;}
- 3.說明:
- 在@Bean標注的方法multipartResolver()方法上,我們傳入了對象參數,
只要配置了參數
,這個參數的值就會從容器中找 - 之所以在容器找事
為了防止有些用戶配置的文件上傳解析器不符合規范,然后我們通過查找,然后找到之后就進返回一個符合規范的名稱
- 在@Bean標注的方法multipartResolver()方法上,我們傳入了對象參數,