您好,登錄后才能下訂單哦!
這篇文章主要講解了“Spring Boot全局配置和注解的操作方法有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Spring Boot全局配置和注解的操作方法有哪些”吧!
零、學(xué)習(xí)目標(biāo)
一、全局配置文件概述
二、Application.properties配置文件
1、配置tomcat端口號(hào)和web虛擬路徑
2、對(duì)象類型的配置與使用
3、兩種屬性注解方式的對(duì)比
三、Application.yaml配置文件
四、兩種配置文件的比較
五、課后作業(yè)
1、掌握application.properties配置文件
2、掌握application.yaml配置文件
3、掌握使用@ConfigurationProperties注入屬性
4、掌握使用@Value注入屬性
全局配置文件能夠?qū)σ恍┠J(rèn)配置值進(jìn)行修改。Spring Boot
使用一個(gè)application.properties
或者application.yaml
的文件作為全局配置文件,該文件存放在src/main/resource
目錄或者類路徑的/config
,一般會(huì)選擇resource
目錄。
(一)創(chuàng)建Spring Boot的Web項(xiàng)目PropertiesDemo
利用Spring Initializr方式創(chuàng)建項(xiàng)目
設(shè)置項(xiàng)目元數(shù)據(jù)
添加測(cè)試和Web依賴
設(shè)置項(xiàng)目名稱及保存位置
單擊【Finish】按鈕,完成項(xiàng)目初始化工作
設(shè)置項(xiàng)目編碼為utf8
(二)在application.properties里添加相關(guān)配置 點(diǎn)開(kāi)resource目錄,查看應(yīng)用程序?qū)傩耘渲梦募?/p>
#修改tomcat默認(rèn)端口號(hào) server.port=8888 #修改web虛擬路徑 server.servlet.context-path=/lzy
更多配置屬性,詳見(jiàn)官網(wǎng)https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html啟動(dòng)應(yīng)用,查看控制臺(tái)
(1)創(chuàng)建Pet類
在net.hw.lesson03里創(chuàng)建bean子包,在子包里創(chuàng)建Pet類
package net.hw.lesson03.bean; /** * 功能:寵物實(shí)體類 * 作者:華衛(wèi) * 日期:2021年04月28日 */ public class Pet { private String type; // 類型 private String name; // 名字 public String getType() { return type; } public void setType(String type) { this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Pet{" + "type='" + type + '\'' + ", name='" + name + '\'' + '}'; } }
(2)創(chuàng)建Person類
在net.hw.lesson03.bean包里創(chuàng)建Person類
package net.hw.lesson03.bean; import java.util.List; import java.util.Map; /** * 功能:人類 * 作者:華衛(wèi) * 日期:2021年04月28日 */ public class Person { private int id; // 編號(hào) private String name; // 姓名 private List<String> hobby; // 愛(ài)好; private Map<String, String> family; // 家庭成員 private Pet pet; // 寵物 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<String> getHobby() { return hobby; } public void setHobby(List<String> hobby) { this.hobby = hobby; } public Map<String, String> getFamily() { return family; } public void setFamily(Map<String, String> family) { this.family = family; } public Pet getPet() { return pet; } public void setPet(Pet pet) { this.pet = pet; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", hobby=" + hobby + ", family=" + family + ", pet=" + pet + '}'; } }
(3)在application.properties里配置對(duì)象
#配置對(duì)象 person.id=1 person.name=張三豐 person.hobby=旅游,美食,音樂(lè) person.family.father=張?jiān)乒? person.family.mother=吳文燕 person.family.grandpa=張宏宇 person.famliy.grandma=唐雨欣 person.family.son=張君寶 person.family.daughter=張曉敏 person.pet.type=泰迪犬 person.pet.name=瑞瑞
(4)給Person類添加注解
添加注解@Component,交給Spring去管理
添加注解@ConfigurationProperties(prefix = “person”)
注意:采用@ConfigurationProperties
注解方式,必須要有set方法
,才會(huì)自動(dòng)為Person類所有屬性注入相應(yīng)的值,包括簡(jiǎn)單類型和復(fù)雜類型
(5)給Pet類添加注解
添加注解@Component,交給Spring去管理
添加注解@ConfigurationProperties(prefix = “person.pet”) - 可以不用添加
(6)從Spring容器里獲取Person類的實(shí)例并輸出
實(shí)現(xiàn)接口ApplicationContextAware,實(shí)現(xiàn)其抽象方法setApplicationContext
聲明ApplicationContext對(duì)象,并在setApplicationContext里初始化
創(chuàng)建測(cè)試方法testPerson(),從Spring容器中獲取Person類的實(shí)例并輸出
運(yùn)行測(cè)試方法testPerson(),查看結(jié)果
(7)解決輸出結(jié)果的漢字亂碼問(wèn)題
使用JDK工具native2ascii.exe
將漢字處理成uncode
編碼
D:\IdeaProjects\PropertiesDemo>cd src/main/resources D:\IdeaProjects\PropertiesDemo\src\main\resources>native2ascii -encoding utf8 application.properties #\u4fee\u6539tomcat\u9ed8\u8ba4\u7aef\u53e3\u53f7 server.port=8888 #\u4fee\u6539web\u865a\u62df\u8def\u5f84 server.servlet.context-path=/lzy #\u914d\u7f6e\u5bf9\u8c61 person.id=1 person.name=\u5f20\u4e09\u4e30 person.hobby=\u65c5\u6e38,\u7f8e\u98df,\u97f3\u4e50 person.family.father=\u5f20\u4e91\u5149 person.family.mother=\u5434\u6587\u71d5 person.family.grandpa=\u5f20\u5b8f\u5b87 person.famliy.grandma=\u5510\u96e8\u6b23 person.family.son=\u5f20\u541b\u5b9d person.family.daughter=\u5f20\u6653\u654f person.pet.type=\u6cf0\u8fea\u72ac person.pet.name=\u745e\u745e D:\IdeaProjects\PropertiesDemo\src\main\resources>
修改application.properties文件,漢字采用unicode編碼形式
運(yùn)行測(cè)試方法testPerson(),查看結(jié)果
(8)從Spring容器里獲取Pet類的實(shí)例并輸出
查看Pet類的注解,有配置屬性的注解@ConfigurationProperties(prefix = "person.pet")
在測(cè)試類里添加測(cè)試方法testPet()
運(yùn)行測(cè)試方法testPet(),查看結(jié)果
注釋掉Pet類的配置屬性的注解@ConfigurationProperties(prefix = "person.pet")
再次運(yùn)行測(cè)試方法testPet(),查看結(jié)果
修改application.properties,配置寵物對(duì)象
再次運(yùn)行測(cè)試方法testPet(),查看結(jié)果
大家可以看到,寵物對(duì)象的屬性依然沒(méi)有被注入,下面我們換一種屬性注解的方式,采用@Value注解方式。
給Pet類的屬性添加值注解@Value
再次運(yùn)行測(cè)試方法testPet(),查看結(jié)果
采用@ConfigurationProperties
注解方式,必須要有set方法
,才會(huì)自動(dòng)為所注解的類的全部屬性注入相應(yīng)的值,包括簡(jiǎn)單類型和復(fù)雜類型(List、Map、Pet……)。
采用@Value
注解方式,優(yōu)點(diǎn)在于可以不要set方法
,但是有兩點(diǎn)不足:其一、需要一個(gè)一個(gè)地注入,顯得麻煩;其二、對(duì)于復(fù)雜類型不能注入,比如Map、List、Pet等。
1、備份application.properties文件 文件更名為application.back
,即讓此文件不起作用
2、在resoures目錄里創(chuàng)建application.yaml文件
創(chuàng)建application.yaml文件
配置服務(wù)器屬性
配置person對(duì)象屬性
配置pet對(duì)象屬性
查看application.yaml文件內(nèi)容
#配置服務(wù)器 server: port: 8888 servlet: context-path: /lzy #配置person對(duì)象 person: id: 1 name: 張三豐 hobby: 旅游 美食 音樂(lè) family: { father: 張?jiān)乒? mother: 吳文燕, grandpa: 張宏宇, grandma: 唐雨欣, son: 張君寶, daughter: 張曉敏 } pet: type: 泰迪犬 name: 瑞瑞 #配置pet對(duì)象 pet: type: 泰迪犬 name: 瑞瑞
3、運(yùn)行測(cè)試方法testPerson(),查看結(jié)果
4、運(yùn)行測(cè)試方法testPet(),查看結(jié)果
1、application.properties配置文件
采用XML語(yǔ)法,鍵值對(duì):鍵=值,沒(méi)有層次結(jié)構(gòu)
如果值里有漢字,必須得轉(zhuǎn)成unicode,否則會(huì)出現(xiàn)亂碼問(wèn)題
2、application.yaml配置文件
采用YAML語(yǔ)法,鍵值對(duì):鍵: 值(冒號(hào)與值之間有空格),具有層次結(jié)構(gòu)
允許值里有漢字,不必轉(zhuǎn)成unicode,也不會(huì)出現(xiàn)亂碼問(wèn)題
任務(wù):修改StudentInfo項(xiàng)目輸出學(xué)生信息
創(chuàng)建學(xué)生實(shí)體類Student
添加屬性
private String id; private String name; private String gender; private int age; private String major; private String telephone; private String email; private String hobby;
添加getter和setter
添加toString()方法
添加注解@Component
添加注解@ConfigureProperties
將application.properties更名為application.yaml
配置student對(duì)象屬性
修改控制器StudentInfoController,student()方法里返回student的值
運(yùn)行啟動(dòng)類
在瀏覽器里訪問(wèn)http://localhost:8080/student
感謝各位的閱讀,以上就是“Spring Boot全局配置和注解的操作方法有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Spring Boot全局配置和注解的操作方法有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。