第3講 Spring Boot基本配置_第1頁
第3講 Spring Boot基本配置_第2頁
第3講 Spring Boot基本配置_第3頁
第3講 Spring Boot基本配置_第4頁
第3講 Spring Boot基本配置_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論