




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4講SpringBoot基本配置Spring框架是一個(gè)輕量級(jí)的開源JavaEE框架,在企業(yè)開發(fā)中被廣泛應(yīng)用SpringBoot幫我們簡單、快速地創(chuàng)建一個(gè)獨(dú)立的、生產(chǎn)級(jí)別的Spring應(yīng)用大多數(shù)SpringBoot應(yīng)用只需要編寫少量配置即可快速整合Spring框架以及第三方框架直接嵌入Tomcat、Jetty或Undertow(無需部署war包)提供可選的starter,簡化應(yīng)用整合按需自動(dòng)配置Spring以及第三方庫為每一種場景準(zhǔn)備了一個(gè)場景啟動(dòng)器每個(gè)場景的配置都會(huì)自動(dòng)配置好,簡化配置、整合、部署約定大于配置:每個(gè)場景都有很多默認(rèn)配置2第4講SpringBoot基本配置SpringBoot配置文件Properties配置YAML配置Profile多環(huán)境配置Web容器配置34.1SpringBoot配置文件SpringBoot中采用了大量的自動(dòng)化配置,在實(shí)際項(xiàng)目中不可避免會(huì)有一些需要自己手動(dòng)配置。SpringBoot支持使用Properties和YAML兩種配置方式。Properties的優(yōu)先級(jí)要高于YAML(YAML的以“.yml”或“.yaml”為后綴)。使用IntelliJIDEA的SpringInitializr方式創(chuàng)建SpringBoot項(xiàng)目時(shí),IDE默認(rèn)會(huì)在src/main/resources目錄下創(chuàng)建一個(gè)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)在多份配置文件中,后讀取的值會(huì)覆蓋前面讀取的值。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)建一個(gè)名為chapter02的項(xiàng)目,包結(jié)構(gòu)為com.yzpc,選擇Web依賴。(2)在chapter02項(xiàng)目的com.yzpc包下新建一個(gè)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()方法,在控制臺(tái)正確輸出了Person實(shí)體類對(duì)象,控制臺(tái)的輸出結(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超級(jí)文件格式,類似于XML,JSON等,采用樹狀結(jié)構(gòu),通過配置分層、縮進(jìn)等格式,來增強(qiáng)配置文件的可讀性。這里介紹一下YAML文件針對(duì)不同數(shù)據(jù)類型配置屬性的寫法,具體如下:(1)value值為普通數(shù)據(jù)類型
當(dāng)YAML配置文件中配置的屬性值為普通數(shù)據(jù)類型時(shí),例如數(shù)字、字符串、布爾類型時(shí),可直接配置對(duì)應(yīng)的屬性值。(2)value值為數(shù)組和單列集合
當(dāng)YAML配置文件中配置的屬性值為數(shù)組或集合類型時(shí),主要有縮進(jìn)式寫法和行內(nèi)式寫法。(3)value值為Map集合和對(duì)象
當(dāng)YAML文件配置的屬性值為Map集合或?qū)ο髸r(shí),YAML配置文件格式同樣可分為縮進(jìn)式和行內(nèi)式寫法。84.3YAML配置在2.2節(jié)案例的基礎(chǔ)上,使用application.yml配置文件為Person對(duì)象賦值,步驟如下:(1)在chapter02項(xiàng)目的resources目錄下,新建一個(gè)application.yml文件,在該配置文件中設(shè)置Person對(duì)象的屬性值,內(nèi)容如下所示。
(2)打開項(xiàng)目的測試類Chapter02ApplicationTests,執(zhí)行測試方法contextLoads(),查看控制臺(tái)輸出結(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)境配置通常情況下,我們可配置多個(gè)配置文件,在不同的環(huán)境下進(jìn)行替換。1.使用Profile文件進(jìn)行多環(huán)境配置
文件名以application-{profile}.properties的格式,其中{profile}對(duì)應(yīng)具體的環(huán)境標(biāo)識(shí)。perties:開發(fā)環(huán)境。perties:測試環(huán)境。perties:生產(chǎn)環(huán)境。
在perties主配置文件中配置屬性,如下:files.active=dev也可以在將項(xiàng)目打成jar包后啟動(dòng)時(shí),在控制臺(tái)命令行動(dòng)態(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)境配置文件,并在各配置文件中對(duì)服務(wù)端口進(jìn)行不同的設(shè)置,代碼如下:
server.port=8082、server.port=8084、server.port=8086(2)打開resources下的主配置文件perties,配置files.active屬性激活開發(fā)環(huán)境的配置文件,即perties,代碼如下:(3)啟動(dòng)項(xiàng)目的啟動(dòng)類Chapter02Application,查看控制臺(tái)輸出,如圖2-3所示。11#指定要激活的多環(huán)境配置文件
files.active=dev4.5Web容器配置
1.常規(guī)配置我們可以在perties主配置文件中對(duì)Tomcat做進(jìn)一步的配置,示例如下:
12server.port=#
服務(wù)器端口號(hào),默認(rèn)8080server.address=#服務(wù)綁定的網(wǎng)絡(luò)地址server.contextPath=#上下文路徑server.connectionTimeout=#連接超時(shí)時(shí)間,-1無限超時(shí)server.session.timeout=#session超時(shí)時(shí)間server.tomcat.basedir=#Tomcat的基本目錄,未配置時(shí),默認(rèn)使用系統(tǒng)的臨時(shí)目錄server.tomcat.redirectContextRoot=#重定向請(qǐng)求server.tomcat.uriEncoding=#編碼格式server.tomcat.max-threads=#Tomcat的最大線程數(shù)4.5Web容器配置
2.HTTPS配置由于HTTPS安全性較高,在開發(fā)中被廣泛的使用,像微信公眾號(hào)、微信小程序等的開發(fā)都要使用HTTPS來完成。對(duì)于個(gè)人開發(fā)者而言,一個(gè)HTTPS證書的價(jià)格還是有點(diǎn)貴,國內(nèi)一些云服務(wù)器廠商提供免費(fèi)的HTTPS證書。在JDK中提供一個(gè)Java數(shù)字證書管理工具keytool,在\jdk\bin\目錄下,通過這個(gè)工具可以生成一個(gè)數(shù)字證書,命令如下所示:命令的參數(shù)意義:-genkey:表示創(chuàng)建一個(gè)新的密鑰。 -alias:表示keystore的別名。-keyalg:表示使用的加密算法是RSA,-keysize:表示密鑰的長度。-keystore:表示生成的密鑰存放位置。-validity:表示密鑰的有效時(shí)間(單位為天)。
13keytool-genkey-aliastomcathttps-keyalgRSA-keysize2048-keystoreyang.p12-validity3654.5Web容器配置
2.HTTPS配置在cmd的命令窗口中,執(zhí)行命令,在執(zhí)行過程中,需要輸入密鑰口令等信息,根據(jù)提示輸入即可,如圖2-4所示。命令執(zhí)行完成,在當(dāng)前bin目錄下生成一個(gè)名為yang.p12的文件,將這個(gè)文件復(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配置
配置完成后,啟動(dòng)項(xiàng)目,在Chrome瀏覽器中輸入https://localhost:8088/hello,這時(shí)可以看見證書是自己生成的,不被瀏覽器認(rèn)可,如圖2-5所示。點(diǎn)擊左下角的“高級(jí)”按鈕,出現(xiàn)攔截原因的界面,如圖2-6所示。提示:對(duì)于不同瀏覽器,攔截的形式和提示不一樣。
此時(shí)點(diǎn)擊“繼續(xù)前往localhost(不安全)”的鏈接,成功運(yùn)行的結(jié)果如圖2-7所示。
以HTTP的形式進(jìn)行問,即訪問http://localhost:8088/hello,就會(huì)訪問失敗,如圖2-8所示。154.5Web容器配置
2.HTTPS配置由于SpringBoot不支持同時(shí)在配置中啟動(dòng)HTTP和HTTPS,這個(gè)時(shí)候可以配置請(qǐng)求重定向,將HTTP請(qǐng)求重定向?yàn)镠TTPS請(qǐng)求。此時(shí)在chapter01項(xiàng)目的com.yzpc.chapter01的包下創(chuàng)建一個(gè)TomcatConfig類來實(shí)現(xiàn)Tomcat配置,代碼如下:
重新啟動(dòng)項(xiàng)目,控制臺(tái)信息,如圖2-9所示。
在瀏覽器中輸入http://localhost:8080/hello,會(huì)自動(dòng)重定向到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文件是存放在整個(gè)項(xiàng)目的根目錄之下,和src文件夾同級(jí);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是一個(gè)跨平臺(tái)的項(xiàng)目管理工具。)perties文件是一個(gè)springBoot框架下的核心配置文件17application.properties配置文件的作用perties是SpringBoot框架中的一個(gè)全局的配置文件,是核心配置文件。這個(gè)配置文件主要用來配置數(shù)據(jù)庫的連接,日志相關(guān)配置,以及以下功能:1)自定義屬性與加載:[在配置文件中自定義屬性后,可以通過@Value("${屬性名}")注解加載對(duì)應(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中對(duì)應(yīng)的值SpringBoot使用了一個(gè)全局的配置文件perties,放在src/main/resources目錄下或者類路徑的/config下。SpingBoot的全局配置文件的作用是對(duì)一些默認(rèn)配置的配置值進(jìn)行修改。19什么是groupid和artifactId?groupId:group意思為組,所以理解為是組織Id,也是公司Id,是項(xiàng)目組織唯一的標(biāo)識(shí)符,用于標(biāo)識(shí)同一個(gè)組織或公司的項(xiàng)目artifactId:即一個(gè)具體的項(xiàng)目groupId和artifactId的存在是為了定位到你的項(xiàng)目,所以它們充當(dāng)著坐標(biāo)的角色artifactId的作用是標(biāo)識(shí)一份具體的功能或模塊,不同的artifactId代表不同的組件或依賴項(xiàng),方便進(jìn)行依賴管理和版本控制20@SpringBootApplication標(biāo)注的類就是主程序類SpringBoot只會(huì)掃描主程序所在的包及其下面的子包如果放在其它包,可用注解@SpringBootApplication(scanBasePackages=“xxx.yyy.zzz”)自定義掃描路徑。21SpringBoot的配置文件有兩種:一種是properties結(jié)尾的,一種是yaml或者yml文件結(jié)尾的正常的情況是先加載yml,接下來加載properties文件。如果相同的配置存在于兩個(gè)文件中。最后會(huì)使用properties中的配置。最后讀取的優(yōu)先集最高。properties配置文件屬于早期,而yml可以看做是對(duì)properties配置文件的升級(jí)yaml是springboot官方推薦的配置文件方法22properties的基本語法格式是“key=value”的形式y(tǒng)ml的基本語法格式是“key:value”的形式y(tǒng)ml是YAML是縮寫,它的全稱YetAnotherMarkupLanguage,翻譯成中文是“另一種標(biāo)記語言”。yml除了可以很好的配置基礎(chǔ)數(shù)據(jù)類型之外,它還可以很方便的配置對(duì)象、集合等多種數(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//全局配置文件這里有一個(gè)全局的配置文件和多個(gè)局部Profile配置文件可以在perties中使用如下配置方式來激活當(dāng)前使用的Profilefiles.active=test25如果使用yml文件,則可以使用如下配置方法spring:profiles:active:test也可以同時(shí)激活幾個(gè)Profilefiles.active:prod,myprofile1,myprofile226如果想把所有的Profile配置信息保存在一個(gè)文件也是支持的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)用場景還包括動(dò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注解,可以將這一過程包含在代碼中兵做到自動(dòng)化。@Profile(“dev”)@ConfigurationpublicclassDevDataInitConfig{@BeanpublicCommandLineRunnerdataInit(){returnnewCommandLineRunner(){@Overridepublicvoidrun(String…args)throwsException{//執(zhí)行dev環(huán)境數(shù)據(jù)初始化}}}}29這里用到了SpringBoot提供的CommandLineRunner接口實(shí)現(xiàn)了該接口的代碼會(huì)在SpringBoot應(yīng)用程序啟動(dòng)時(shí)自動(dòng)執(zhí)行,可以在run()方法中提供數(shù)據(jù)初始化相關(guān)的代碼30自定義配置信息創(chuàng)建和使用自定義配置信息舉個(gè)例子:在配置文件中創(chuàng)建一個(gè)自定義的配置項(xiàng),如下所示sprin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 航海心理學(xué)與人際關(guān)系考核試卷
- 2024年殘疾人用車及其零件項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 濟(jì)南市鋼城區(qū)2025年八年級(jí)《語文》上學(xué)期期末試題與參考答案
- 2025年中國背心袋制袋機(jī)行業(yè)市場規(guī)模及未來投資方向研究報(bào)告
- 葡萄酒品鑒會(huì)現(xiàn)場品鑒師服務(wù)合同
- 2025年中國保護(hù)套管行業(yè)市場前景預(yù)測及投資價(jià)值評(píng)估分析報(bào)告
- 教育平臺(tái)課程版權(quán)侵權(quán)處理補(bǔ)充協(xié)議
- 生產(chǎn)線設(shè)備基礎(chǔ)施工與智能機(jī)械安裝及優(yōu)化服務(wù)合同
- 2025年中國半導(dǎo)體材料行業(yè)市場現(xiàn)狀及未來發(fā)展前景預(yù)測分析報(bào)告
- 網(wǎng)紅飲品店區(qū)域代理權(quán)授權(quán)及合作協(xié)議
- 家政搬家合同協(xié)議
- 2025-2030中國核電用鋼行業(yè)市場發(fā)展分析及發(fā)展趨勢預(yù)測研究報(bào)告
- 口腔外科門診手術(shù)操作規(guī)范
- 綠色施工評(píng)價(jià)標(biāo)準(zhǔn)【B.0.1 批次評(píng)價(jià)表】
- 以案釋德、以案釋紀(jì)、以案釋法的教育心得體會(huì)
- 《公路橋梁無縫式樹脂彈性體伸縮裝置施工技術(shù)規(guī)程》
- 2025年吉林省中考模擬語文試卷試題及答案詳解
- 呼吸內(nèi)科科普知識(shí)
- 體育賽事組織的合理化建議與措施
- 2023年普通高等學(xué)校招生全國統(tǒng)一考試(全國甲卷)物理試題含答案
- 構(gòu)建素養(yǎng)導(dǎo)向的小學(xué)數(shù)學(xué)“套餐式”作業(yè)設(shè)計(jì)的實(shí)踐與研究
評(píng)論
0/150
提交評(píng)論