版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4講SpringBoot基本配置Spring框架是一個輕量級的開源JavaEE框架,在企業(yè)開發(fā)中被廣泛應(yīng)用SpringBoot幫我們簡單、快速地創(chuàng)建一個獨(dú)立的、生產(chǎn)級別的Spring應(yīng)用大多數(shù)SpringBoot應(yīng)用只需要編寫少量配置即可快速整合Spring框架以及第三方框架直接嵌入Tomcat、Jetty或Undertow(無需部署war包)提供可選的starter,簡化應(yīng)用整合按需自動配置Spring以及第三方庫為每一種場景準(zhǔn)備了一個場景啟動器每個場景的配置都會自動配置好,簡化配置、整合、部署約定大于配置:每個場景都有很多默認(rèn)配置2第4講SpringBoot基本配置SpringBoot配置文件Properties配置YAML配置Profile多環(huán)境配置Web容器配置34.1SpringBoot配置文件SpringBoot中采用了大量的自動化配置,在實(shí)際項(xiàng)目中不可避免會有一些需要自己手動配置。SpringBoot支持使用Properties和YAML兩種配置方式。Properties的優(yōu)先級要高于YAML(YAML的以“.yml”或“.yaml”為后綴)。使用IntelliJIDEA的SpringInitializr方式創(chuàng)建SpringBoot項(xiàng)目時,IDE默認(rèn)會在src/main/resources目錄下創(chuàng)建一個perties文件,例如:server.port=8088也可以將配置文件perties后綴修改為.yml格式,即文件全名為application.yml,YAML文件的好處是它采用樹狀結(jié)構(gòu),例如:4server:port:80884.1SpringBoot配置文件SpringBoot項(xiàng)目中的perties或者application.yml配置文件,位置:如圖所示。如果同一配置項(xiàng)出現(xiàn)在多份配置文件中,后讀取的值會覆蓋前面讀取的值。54.2Properties配置在perties文件中定義項(xiàng)目的相關(guān)屬性,這些屬性可以是系統(tǒng)屬性、環(huán)境變量、命令參數(shù)等信息,也可以是自定義配置文件名稱和位置,示例代碼如下:6server.address=80server.port=8088spring.datasource.driver-class-name=
com.mysql.cj.jdbc.Driver
=application4.2Properties配置通過實(shí)例講解perties配置文件具體使用。(1)使用SpringInitializr方式創(chuàng)建一個名為chapter02的項(xiàng)目,包結(jié)構(gòu)為com.yzpc,選擇Web依賴。(2)在chapter02項(xiàng)目的com.yzpc包下新建一個entity包,并在該包下新建Pet和Person的實(shí)體類。(3)打開項(xiàng)目resources目錄下的perties配置文件,添加配置項(xiàng)及值,用于測試獲取配置項(xiàng)的值。(4)在測試類Chapter02ApplicationTests中引入Person實(shí)體類Bean,通過@Autowired注解將Person作為Bean注入Sprig容器,在contextLoads()方法中輸出Person。
運(yùn)行contextLoads()方法,在控制臺正確輸出了Person實(shí)體類對象,控制臺的輸出結(jié)果如圖2-2所示。7packagecom.yzpc.entity;publicclassPet{privateStringtype;privateStringname; //省略屬性的getter方法和setter方法
//省略重寫的toString()方法}packagecom.yzpc.entity;importperties.ConfigurationProperties;importorg.springframework.stereotype.Component;importjava.util.*;@Component@ConfigurationProperties(prefix="person")publicclassPerson{privateintid;privateStringname;privateListhobby;privateString[]family;privateMapmap;privatePetpet;//省略屬性的getter方法和setter方法
//省略重寫的toString()方法}person.id=2=Jennyperson.hobby=read,sport,singperson.family=mother,fatherperson.map.key1=value1person.map.key2=value2person.pet.type=cat
=garfieldpackagecom.yzpc;importcom.yzpc.entity.Person;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;@SpringBootTestclassChapter02ApplicationTests{ @Autowired
privatePersonperson; @Test voidcontextLoads(){
System.out.println(person); }
}4.3YAML配置YAML格式是SpringBoot支持的一種JSON超級文件格式,類似于XML,JSON等,采用樹狀結(jié)構(gòu),通過配置分層、縮進(jìn)等格式,來增強(qiáng)配置文件的可讀性。這里介紹一下YAML文件針對不同數(shù)據(jù)類型配置屬性的寫法,具體如下:(1)value值為普通數(shù)據(jù)類型
當(dāng)YAML配置文件中配置的屬性值為普通數(shù)據(jù)類型時,例如數(shù)字、字符串、布爾類型時,可直接配置對應(yīng)的屬性值。(2)value值為數(shù)組和單列集合
當(dāng)YAML配置文件中配置的屬性值為數(shù)組或集合類型時,主要有縮進(jìn)式寫法和行內(nèi)式寫法。(3)value值為Map集合和對象
當(dāng)YAML文件配置的屬性值為Map集合或?qū)ο髸r,YAML配置文件格式同樣可分為縮進(jìn)式和行內(nèi)式寫法。84.3YAML配置在2.2節(jié)案例的基礎(chǔ)上,使用application.yml配置文件為Person對象賦值,步驟如下:(1)在chapter02項(xiàng)目的resources目錄下,新建一個application.yml文件,在該配置文件中設(shè)置Person對象的屬性值,內(nèi)容如下所示。
(2)打開項(xiàng)目的測試類Chapter02ApplicationTests,執(zhí)行測試方法contextLoads(),查看控制臺輸出結(jié)果,具體如圖2-3所示。
9
person:id:3
name:王英瑛
hobby:[read,sport,sing]
family:[mother,father]
map:{key1:value1,key2:value2}
pet:{type:cat,name:garfield}4.4Profile多環(huán)境配置通常情況下,我們可配置多個配置文件,在不同的環(huán)境下進(jìn)行替換。1.使用Profile文件進(jìn)行多環(huán)境配置
文件名以application-{profile}.properties的格式,其中{profile}對應(yīng)具體的環(huán)境標(biāo)識。perties:開發(fā)環(huán)境。perties:測試環(huán)境。perties:生產(chǎn)環(huán)境。
在perties主配置文件中配置屬性,如下:files.active=dev也可以在將項(xiàng)目打成jar包后啟動時,在控制臺命令行動態(tài)指定激活環(huán)境配置,命令如下:java-jarxxx.jar--spring.profiles.active=dev104.4Profile多環(huán)境配置通過案例演示Profile多環(huán)境配置文件的使用,步驟如下:(1)在chapter02項(xiàng)目的resources目錄下,分別新建perties、perties和perties多環(huán)境配置文件,并在各配置文件中對服務(wù)端口進(jìn)行不同的設(shè)置,代碼如下:
server.port=8082、server.port=8084、server.port=8086(2)打開resources下的主配置文件perties,配置files.active屬性激活開發(fā)環(huán)境的配置文件,即perties,代碼如下:(3)啟動項(xiàng)目的啟動類Chapter02Application,查看控制臺輸出,如圖2-3所示。11#指定要激活的多環(huán)境配置文件
files.active=dev4.5Web容器配置
1.常規(guī)配置我們可以在perties主配置文件中對Tomcat做進(jìn)一步的配置,示例如下:
12server.port=#
服務(wù)器端口號,默認(rèn)8080server.address=#服務(wù)綁定的網(wǎng)絡(luò)地址server.contextPath=#上下文路徑server.connectionTimeout=#連接超時時間,-1無限超時server.session.timeout=#session超時時間server.tomcat.basedir=#Tomcat的基本目錄,未配置時,默認(rèn)使用系統(tǒng)的臨時目錄server.tomcat.redirectContextRoot=#重定向請求server.tomcat.uriEncoding=#編碼格式server.tomcat.max-threads=#Tomcat的最大線程數(shù)4.5Web容器配置
2.HTTPS配置由于HTTPS安全性較高,在開發(fā)中被廣泛的使用,像微信公眾號、微信小程序等的開發(fā)都要使用HTTPS來完成。對于個人開發(fā)者而言,一個HTTPS證書的價格還是有點(diǎn)貴,國內(nèi)一些云服務(wù)器廠商提供免費(fèi)的HTTPS證書。在JDK中提供一個Java數(shù)字證書管理工具keytool,在\jdk\bin\目錄下,通過這個工具可以生成一個數(shù)字證書,命令如下所示:命令的參數(shù)意義:-genkey:表示創(chuàng)建一個新的密鑰。 -alias:表示keystore的別名。-keyalg:表示使用的加密算法是RSA,-keysize:表示密鑰的長度。-keystore:表示生成的密鑰存放位置。-validity:表示密鑰的有效時間(單位為天)。
13keytool-genkey-aliastomcathttps-keyalgRSA-keysize2048-keystoreyang.p12-validity3654.5Web容器配置
2.HTTPS配置在cmd的命令窗口中,執(zhí)行命令,在執(zhí)行過程中,需要輸入密鑰口令等信息,根據(jù)提示輸入即可,如圖2-4所示。命令執(zhí)行完成,在當(dāng)前bin目錄下生成一個名為yang.p12的文件,將這個文件復(fù)制到我們第1章的chapter01項(xiàng)目的根目錄下,而后在perties中做如下配置:14#key-store表示密鑰文件名server.ssl.key-store=yang.p12#key-alias表示密鑰別名server.ssl.key-alias=tomcathttps#key-store-password表示在cmd命令執(zhí)行過程中輸入的密碼
server.ssl.key-store-password=1234564.5Web容器配置
2.HTTPS配置
配置完成后,啟動項(xiàng)目,在Chrome瀏覽器中輸入https://localhost:8088/hello,這時可以看見證書是自己生成的,不被瀏覽器認(rèn)可,如圖2-5所示。點(diǎn)擊左下角的“高級”按鈕,出現(xiàn)攔截原因的界面,如圖2-6所示。提示:對于不同瀏覽器,攔截的形式和提示不一樣。
此時點(diǎn)擊“繼續(xù)前往localhost(不安全)”的鏈接,成功運(yùn)行的結(jié)果如圖2-7所示。
以HTTP的形式進(jìn)行問,即訪問http://localhost:8088/hello,就會訪問失敗,如圖2-8所示。154.5Web容器配置
2.HTTPS配置由于SpringBoot不支持同時在配置中啟動HTTP和HTTPS,這個時候可以配置請求重定向,將HTTP請求重定向?yàn)镠TTPS請求。此時在chapter01項(xiàng)目的com.yzpc.chapter01的包下創(chuàng)建一個TomcatConfig類來實(shí)現(xiàn)Tomcat配置,代碼如下:
重新啟動項(xiàng)目,控制臺信息,如圖2-9所示。
在瀏覽器中輸入http://localhost:8080/hello,會自動重定向到https://localhost:8088/hello。16@Configuration
publicclassTomcatConfig{
@Bean
TomcatServletWebServerFactorytomcatServletWebServerFactory(){
TomcatServletWebServerFactoryfactory=newTomcatServletWebServerFactory(){
@Override
protectedvoidpostProcessContext(Contextcontext){
SecurityConstraintconstraint=newSecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollectioncollection=newSecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
factory.addAdditionalTomcatConnectors(createTomcatConnector());
returnfactory;
}privateConnectorcreateTomcatConnector(){
Connectorconnector=newConnector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8088);
returnconnector;
}
}perties文件和pom.xml文件的區(qū)別1)文件存放位置不同:pom.xml文件是存放在整個項(xiàng)目的根目錄之下,和src文件夾同級;perties文件是放在:項(xiàng)目名/src/main/resources文件夾中;2)作用不同:pom.xml文件是所有maven項(xiàng)目必須存在的配置文件,該文件用于管理:源代碼、配置文件、開發(fā)者的信息和角色、問題追蹤系統(tǒng)、組織信息、項(xiàng)目授權(quán)、項(xiàng)目的url、項(xiàng)目的依賴關(guān)系等等;(maven是一個跨平臺的項(xiàng)目管理工具。)perties文件是一個springBoot框架下的核心配置文件17application.properties配置文件的作用perties是SpringBoot框架中的一個全局的配置文件,是核心配置文件。這個配置文件主要用來配置數(shù)據(jù)庫的連接,日志相關(guān)配置,以及以下功能:1)自定義屬性與加載:[在配置文件中自定義屬性后,可以通過@Value("${屬性名}")注解加載對應(yīng)的配置屬性]2)參數(shù)間的引用:可以通過${屬性名稱}來調(diào)用屬性值]3)使用隨機(jī)數(shù):可以通過${}類似的寫法賦予屬性隨機(jī)數(shù)的特性4)通過命令行設(shè)置屬性值5)多環(huán)境配置18Java代碼中是無法直接讀取pom.xml中的內(nèi)容的,需要先把值轉(zhuǎn)到xxx.properties中,再通過程序讀取perties中對應(yīng)的值SpringBoot使用了一個全局的配置文件perties,放在src/main/resources目錄下或者類路徑的/config下。SpingBoot的全局配置文件的作用是對一些默認(rèn)配置的配置值進(jìn)行修改。19什么是groupid和artifactId?groupId:group意思為組,所以理解為是組織Id,也是公司Id,是項(xiàng)目組織唯一的標(biāo)識符,用于標(biāo)識同一個組織或公司的項(xiàng)目artifactId:即一個具體的項(xiàng)目groupId和artifactId的存在是為了定位到你的項(xiàng)目,所以它們充當(dāng)著坐標(biāo)的角色artifactId的作用是標(biāo)識一份具體的功能或模塊,不同的artifactId代表不同的組件或依賴項(xiàng),方便進(jìn)行依賴管理和版本控制20@SpringBootApplication標(biāo)注的類就是主程序類SpringBoot只會掃描主程序所在的包及其下面的子包如果放在其它包,可用注解@SpringBootApplication(scanBasePackages=“xxx.yyy.zzz”)自定義掃描路徑。21SpringBoot的配置文件有兩種:一種是properties結(jié)尾的,一種是yaml或者yml文件結(jié)尾的正常的情況是先加載yml,接下來加載properties文件。如果相同的配置存在于兩個文件中。最后會使用properties中的配置。最后讀取的優(yōu)先集最高。properties配置文件屬于早期,而yml可以看做是對properties配置文件的升級yaml是springboot官方推薦的配置文件方法22properties的基本語法格式是“key=value”的形式y(tǒng)ml的基本語法格式是“key:value”的形式y(tǒng)ml是YAML是縮寫,它的全稱YetAnotherMarkupLanguage,翻譯成中文是“另一種標(biāo)記語言”。yml除了可以很好的配置基礎(chǔ)數(shù)據(jù)類型之外,它還可以很方便的配置對象、集合等多種數(shù)據(jù)類型;yml支持多種語言、通用性更好。properties格式的配置文件只適用于SpringBoot項(xiàng)目,也就是只適用于Java語言,而yml支持更多的開發(fā)語言,它可以用在Java、PHP、Python、Ruby、JavaScript、Perl、Golang等語言中。2324配置文件與Profile假設(shè)存在如下所示的配置文件集合:perties//生產(chǎn)環(huán)境perties//測試環(huán)境perties//開發(fā)環(huán)境perties//預(yù)發(fā)布環(huán)境perties//全局配置文件這里有一個全局的配置文件和多個局部Profile配置文件可以在perties中使用如下配置方式來激活當(dāng)前使用的Profilefiles.active=test25如果使用yml文件,則可以使用如下配置方法spring:profiles:active:test也可以同時激活幾個Profilefiles.active:prod,myprofile1,myprofile226如果想把所有的Profile配置信息保存在一個文件也是支持的spring:profiles:test//test環(huán)境相關(guān)配置信息spring:profiles:prod//prod環(huán)境相關(guān)配置信息還可以在命令行使用—files.active參數(shù)java–jarxxx.jar–files.active=prod27代碼控制與ProfileProfile這一概念的應(yīng)用場景還包括動態(tài)控制代碼執(zhí)行流程可以使用@Profile注解@ConfigurationpublicclassDataSourceConfig{@Bean@Profile(“dev”)publicDataSourcedevDataSource(){//創(chuàng)建dev環(huán)境下的DataSource}}@Bean@Profile(“prod”)publicDataSourceprodDataSource(){//創(chuàng)建prod環(huán)境下的DataSource}28在開發(fā)過程中,通常需要根據(jù)不同的運(yùn)行環(huán)境初始化數(shù)據(jù),基于@Profile注解,可以將這一過程包含在代碼中兵做到自動化。@Profile(“dev”)@ConfigurationpublicclassDevDataInitConfig{@BeanpublicCommandLineRunnerdataInit(){returnnewCommandLineRunner(){@Overridepublicvoidrun(String…args)throwsException{//執(zhí)行dev環(huán)境數(shù)據(jù)初始化}}}}29這里用到了SpringBoot提供的CommandLineRunner接口實(shí)現(xiàn)了該接口的代碼會在SpringBoot應(yīng)用程序啟動時自動執(zhí)行,可以在run()方法中提供數(shù)據(jù)初始化相關(guān)的代碼30自定義配置信息創(chuàng)建和使用自定義配置信息舉個例子:在配置文件中創(chuàng)建一個自定義的配置項(xiàng),如下所示sprin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國抗體藥物偶聯(lián)物行業(yè)研發(fā)進(jìn)展與市場準(zhǔn)入策略分析
- 中國建筑裝飾材料市場供需狀況與價格趨勢分析報告
- 中國建筑給排水系統(tǒng)節(jié)能改造市場機(jī)遇評估及技術(shù)方案比選與投資回報
- 中國建筑機(jī)械設(shè)備融資租賃業(yè)務(wù)模式創(chuàng)新研究報告
- 中國建筑機(jī)械智能化轉(zhuǎn)型與可持續(xù)發(fā)展戰(zhàn)略報告
- 中國建筑工程機(jī)械行業(yè)極端氣候適應(yīng)設(shè)備研發(fā)需求報告
- 2026年土地管理法案例解讀及模擬試題
- 2026年會計(jì)實(shí)務(wù)操作成本核算與財務(wù)管理習(xí)題
- 防腐涂層施工質(zhì)量審查方案
- 道路交通安全隱患排查方案
- 要素式民事起訴狀(房屋租賃合同糾紛)
- 急性呼吸窘迫綜合征病例討論
- DB11∕T 510-2024 公共建筑節(jié)能工程施工質(zhì)量驗(yàn)收規(guī)程
- 英語滬教版5年級下冊
- T/CPFIA 0005-2022含聚合態(tài)磷復(fù)合肥料
- GB/T 43590.507-2025激光顯示器件第5-7部分:激光掃描顯示在散斑影響下的圖像質(zhì)量測試方法
- QGDW12505-2025電化學(xué)儲能電站安全風(fēng)險評估規(guī)范
- 顧客特殊要求培訓(xùn)課件
- 幼兒園助教培訓(xùn):AI賦能教師教學(xué)能力提升
- 經(jīng)銷商會議總結(jié)模版
- 兩癌預(yù)防知識講座
評論
0/150
提交評論