如何做網(wǎng)站滾動屏幕seo網(wǎng)絡(luò)優(yōu)化平臺
老韓學(xué)生
- Lombok
- Lombok介紹
- Lombok常用注解
- Lombok應(yīng)用實(shí)例
- 代碼實(shí)現(xiàn)
- idea安裝lombok插件
- Spring Initializr
- Spring Initializr介紹
- Spring Initializr使用演示
- 需求說明
- 方式1: IDEA創(chuàng)建
- 方式2: start.spring.io創(chuàng)建
- 注意事項(xiàng)和說明
- yaml語法
- yaml介紹
- 使用文檔
- yaml基本語法
- 數(shù)據(jù)類型
- 字面量
- 對象
- 數(shù)組
- yaml應(yīng)用實(shí)例
- 需求圖解
- 代碼實(shí)現(xiàn)
- 注意事項(xiàng)和使用細(xì)節(jié)
?? 上一篇: springboot系列六: springboot底層機(jī)制實(shí)現(xiàn) 下
🎉 歡迎來到 springboot系列七: Lombok注解,Spring Initializr,yaml語法 🎉
在本篇文章中,我們將探索 Lombok 注解的使用,Spring Initializr 的功能以及 yaml 語法的基本用法。這些工具和技術(shù)將幫助您更高效地開發(fā) Spring Boot 應(yīng)用程序。
🔧 本篇需要用到的項(xiàng)目: quickstart項(xiàng)目
Lombok
Lombok介紹
●Lombok介紹
1.簡化JavaBean
開發(fā), 可以使用Lombok
的注解讓代碼更加簡潔. mybatis中學(xué)習(xí)過
2.Java項(xiàng)目中, 很多沒有技術(shù)含量又必須存在的代碼, POJO的getter/setter/toString;異常處理;I/O流的關(guān)閉操作等等,這些代碼既沒有技術(shù)含量,又影響著代碼的美觀,Lombok應(yīng)運(yùn)而生。
●SpringBoot和IDEA官方支持
1.IDEA 2020已經(jīng)內(nèi)置了Lombok插件
2.SpringBoot 2.1.x之后的版本也在Starter中內(nèi)置了Lombok依賴
Lombok常用注解
Lombok應(yīng)用實(shí)例
代碼實(shí)現(xiàn)
●需求說明
回到我們的 quickstart 項(xiàng)目, 使用Lombok簡化Furn.java代碼, 讓代碼簡潔高效
1.在pom.xml
中引入lombok
引入lombok, 版本在spring-boot-dependencies-2.5.3.pom已經(jīng)指定了, 把光標(biāo)放在lombok, ctrl+b 可以看到. springboot依賴管理
2.修改Furn.java, 使用Lombok注解簡化代碼. 提示: 可以通過idea自帶的反編譯功能, 看Furn.class的源代碼
@Component
@ToString //編譯時, 生成toString方法, 默認(rèn)情況下, 會生成一個無參構(gòu)造器
@ConfigurationProperties(prefix = "furn01")
public class Furn {private Integer id;private String name;private BigDecimal price;
}
3.@Data
注解
@Component
@ConfigurationProperties(prefix = "furn01")
/*** 說明:* 1. Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}.* 2. @Data 注解等價使用了 如下注解* @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode* 3. @RequiredArgsConstructor, 單獨(dú)地說一下*/
@Data
public class Furn {private Integer id;private String name;private BigDecimal price;
}
編譯后
4.@RequiredArgsConstructor
詳解
在我們寫controller或者Service層的時候,需要注入很多的mapper接口或者另外的service接口,這時候就會寫很多的@Autowired注解,代碼看起來很亂
lombok
提供了一個注解:
@RequiredArgsConstructor(onConstructor = @_(@Autowired))
寫在類上可以代替@Autowired注解,需要注意的是在注入時需要用final定義,或者使用@notnull注解
5.@NoArgsConstructor
詳解
/*** 說明: @NoArgsConstructor 在編譯時, 會生成無參構(gòu)造器, 前面我們說過, 默認(rèn)情況下, 會生成一個無參構(gòu)造器* 說明: 當(dāng)我們有其它構(gòu)造器生成時, 如果你希望仍然有無參構(gòu)造器, 就需要使用@NoArgsConstructor顯示聲明一下* , 否則就會覆蓋無參構(gòu)造器, 從而造成代碼錯誤*/
//@NoArgsConstructor/*** @allArgsConstructor 在編譯時, 會生成全參構(gòu)造器, 造成覆蓋掉無參構(gòu)造器, 項(xiàng)目啟動, 報(bào)錯* 解決方案一: 取消Furn作為Bean注入, 那么在需要自動裝配Furn的位置, 通通注釋掉* 解決方案二: 顯式聲明一下無參構(gòu)造器, 可以手寫, 也可以用@NoArgsConstructor*/
@AllArgsConstructor
public class Furn {private Integer id;private String name;private BigDecimal price;
}
idea安裝lombok插件
1.不裝插件也可以使用基本的注解, 比如 @Data, @Getter 等.
2.但是不能使用其擴(kuò)展功能, 比如 日志輸出, 如意我們還是安裝一下, 也比較簡單.
3.演示使用Lombok
支持日志輸出(建議使用slf4j), 修改src/main/java/com/zzw/HiController.java
@RequestMapping("/furn")
@ResponseBody
public Furn furn() {//System.out.println("furn = " + furn);//使用slfj日志輸出//普通方式log.info("furn-" + furn);//占位符方式輸出log.info("furn={}, myfurn={}", furn, furn);return furn;
}
4.瀏覽器訪問 http://localhost:8088/furn
前端顯示
后端顯示
2024-06-17 13:38:33.476 INFO 11584 — [nio-8088-exec-3] com.zzw.HiController : furn-Furn(id=100, name=家居, price=6000)
2024-06-17 13:38:33.476 INFO 11584 — [nio-8088-exec-3] com.zzw.HiController : furn=Furn(id=100, name=家居, price=6000), myfurn=Furn(id=100, name=家居, price=6000)
前提:
1.Furn實(shí)體類要有toString方法, 否則后端輸出對象地址.
2.Furn實(shí)體類要有setter方法, 因?yàn)閍pplication.properties中的屬性通過setter方法設(shè)置, 否則后端輸出null.
3.Furn實(shí)體類要有g(shù)etter方法, 因?yàn)閒urn.id furn.name是通過getId和getName方法獲取的, 否則前端不輸出JSON信息.
Spring Initializr
Spring Initializr介紹
●Spring Initializr作用
1.程序員通過Maven Archetype
來生成Maven
項(xiàng)目, 項(xiàng)目原型相對簡陋, 需要手動配置, 但是比較靈活.
2.通過Spring
官方提供的Spring Initializr
來構(gòu)建Maven
項(xiàng)目, 能完美支持IDEA
和`Eclipse, 讓程序員來選擇需要的開發(fā)場景(starter), 還能自動生成啟動類和單元測試代碼.
3.Spring Initializr
對 Idea
版本有要求, 同時還要走國外網(wǎng)絡(luò), 我們還是習(xí)慣使用Maven Archetype
來生成Maven
項(xiàng)目. 但是作為知識點(diǎn), 還是要介紹一下.
Spring Initializr使用演示
需求說明
使用Spring Initializr創(chuàng)建SpringBoot項(xiàng)目, 并支持web應(yīng)用場景, 支持MyBatis.
方式1: IDEA創(chuàng)建
1.創(chuàng)建項(xiàng)目
2.選擇 Spring Initializr. 如果沒有看到這個選項(xiàng), 需要安裝Spring Initializr插件
3.項(xiàng)目設(shè)置
4.選擇需要的開發(fā)場景
5.項(xiàng)目創(chuàng)建好后, 自動生成啟動類和單元測試代碼
方式2: start.spring.io創(chuàng)建
https://start.spring.io/
注意事項(xiàng)和說明
1.如果通過Spring Initializr
創(chuàng)建項(xiàng)目, pom.xml
爆紅
2.解決方案: 指定版本和當(dāng)前的springboot
一致, 刷新maven
即可解決
yaml語法
yaml介紹
●基本說明
1.YAML是"YAML Ain’t Markup Language"(YAML不是一種標(biāo)記語言)的遞歸縮寫. 在開發(fā)這種語言時, YAML的意思其實(shí)是: “Yet Another Markup Language”(仍是一種標(biāo)記語言), 是為了強(qiáng)調(diào)這種語言以數(shù)據(jù)作為中心, 而不是以標(biāo)記語言為重點(diǎn), 而用反向縮略語重命名. 百度百科
●解讀
1.YAML 以數(shù)據(jù)作為中心, 而不是以標(biāo)記語言為重點(diǎn).
2.YAML 仍然是一種標(biāo)記語言, 但是和傳統(tǒng)的標(biāo)記語言不一樣, 是以數(shù)據(jù)為中心的標(biāo)記語言.
3.YAML 非常適合用來做以數(shù)據(jù)為中心的配置文件 [springboot: application.yml]
使用文檔
官方文檔: https://yaml.org/
yaml for java: https://www.cnblogs.com/strongmore/p/14219180.html
yaml基本語法
1.形式為 key: value, 注意: 后面有空格
2.區(qū)分大小寫:
3.使用縮進(jìn)表示層級關(guān)系
4.縮進(jìn)不允許使用tab, 只允許空格 [有些地方也是別tab, 推薦使用空格]
5.縮進(jìn)的空格數(shù)不重要, 只要相同層級的元素左對齊即可
6.字符串無需加引號
7.yaml中, 注釋使用 #
數(shù)據(jù)類型
字面量
1.字面量: 單個的, 不可再分的值. date, boolean, string, number, null
2.number可以表示整數(shù), 浮點(diǎn)數(shù).
3.保存形式為key: value
對象
1.對象: 鍵值對的集合, 比如map, hash, object
行內(nèi)寫法: k: {k1: v1, k2: v2, k3: v3}
monster: {id: 100, name: 牛魔王}
或
換行形式:
k:
??k1: v1
??k2: v2
??k3: v3
monster:
??id: 100
??name: 牛魔王
??skill: 芭蕉扇
2.舉例說明
數(shù)組
1.數(shù)組: 一組按次序排列的值, 比如 array, list, set, queue
行內(nèi)寫法: k: [v1, v2, v3]
hobby: [打籃球, 踢足球, 打羽毛球]
或
換行形式:
k:
??- v1
??- v2
??- v3
hobby:
??- 打籃球
??- 踢足球
??- 打羽毛球
2.舉例說明
yaml應(yīng)用實(shí)例
需求圖解
需求: 使用yaml配置文件 和 JavaBean 進(jìn)行數(shù)據(jù)綁定, 體會 yaml 使用方式
1.創(chuàng)建項(xiàng)目 configuration, 完成yaml的使用
2.運(yùn)行效果
代碼實(shí)現(xiàn)
1.創(chuàng)建一個新的 SpringBoot 項(xiàng)目 configuration, 我們這里用靈活配置的方式創(chuàng)建.
2.在pom.xml引入lombok
, 并切換一下springboot
版本
<!--導(dǎo)入springboot父工程-規(guī)定寫法-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version>
</parent><dependencies><!--導(dǎo)入web項(xiàng)目場景啟動器, 會自動地導(dǎo)入和web開發(fā)相關(guān)的所有依賴[庫/jar]--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--引入lombok, 使用版本仲裁--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
</dependencies>
3.創(chuàng)建src/main/java/com/zzw/springboot/bean/Car.java
.
小細(xì)節(jié): 創(chuàng)建的bean
需要在SpringBootApplication
包或者其子包, 否則默認(rèn)不會被掃描, 同時也不能完全使用lombok
的相關(guān)簡化注解.
@Data
public class Car {private String name;private double price;
}
4.創(chuàng)建src/main/java/com/zzw/springboot/bean/Monster.java
@Component
@Data
public class Monster {private Integer id;private String name;private Integer age;private Boolean isMarried;private Date birth;private Car car;private String[] skill;private List<String> hobby;private Map<String, Object> wife;private Set<Double> salaries;private Map<String, List<Car>> cars;
}
5.創(chuàng)建src/main/java/com/zzw/springboot/controller/HiController.java
@RestController
public class HiController {@Autowiredprivate Monster monster;@RequestMapping("/monster")public Monster monster() {return monster;}
}
6.創(chuàng)建src/main/java/com/zzw/springboot/Application.java
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
7.啟動項(xiàng)目, 進(jìn)行測試. 為空, 說明還沒有對數(shù)據(jù)進(jìn)行配置綁定.
8.創(chuàng)建src/main/resources/application.yml
, 演示各種寫法. 提示: 編寫application.yml 時, 這些Bean的字段是可以通過安裝插件或jar來自動提示的, 后面會學(xué)到, 現(xiàn)在先苦后甜.
monster:id: 100name: 牛魔王age: 200isMarried: truebirth: 2000/10/15
9.配置Furn
. 參考properties的配置綁定
@ConfigurationProperties(prefix = "monster")
public class Monster {}
10.重啟,測試
11.完成后面數(shù)據(jù)的綁定
monster:id: 100name: 牛魔王age: 200isMarried: truebirth: 2000/10/15#對象
# car: {name: 奔馳, price: 120000} #行內(nèi)風(fēng)格car:name: 奔馳price: 160000 #換行風(fēng)格#數(shù)組
# skill: [芭蕉扇, 七十二變, 刀槍不入] #行內(nèi)風(fēng)格skill:- 芭蕉扇~- 七十二變~- 刀槍不入~ #換行風(fēng)格hobby:- 喝酒- 吃肉- 陪老婆 #換行風(fēng)格#map-屬于對象
# wife: {no1: 鐵扇公主, no2: 狐貍精} #行內(nèi)風(fēng)格wife:no1: 鐵扇公主no2: 狐貍精 #換行風(fēng)格#set-屬于對象
# salaries: [10000, 20000, 30000] #行內(nèi)風(fēng)格salaries:- 10000- 20000- 30000 #換行風(fēng)格cars: # 因?yàn)閏ars k-v v是List<Car> 所以我們使用換行風(fēng)格group1:- {name: 奔馳, price: 120000}- name: 奧迪price: 130000group2:- {name: 寶馬, price: 110000}- name: 蘭博基尼price: 300000
注意事項(xiàng)和使用細(xì)節(jié)
1.如果application.properties
和 application.yml
有相同的前綴值綁定, 則application.properties
優(yōu)先級高, 開發(fā)時, 應(yīng)當(dāng)避免.
2.字符串無需加引號, 如果你用" " 或者 ’ ’ 包起來, 也可以.
3.解決yaml
和 properties
配置文件, 不提示字段信息問題
1)如圖, 我們可以知道, 在編寫application.yaml
文件時, 不提示Monster
的字段信息, 非常不方便
2)在pom.xml
加入spring-boot-configuration-processor
依賴, 可以從quickstart
項(xiàng)目拷貝.
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><!--這里我們配置optional為true說明: 表示防止將此依賴傳遞到其它模塊--><optional>true</optional>
</dependency>
3)對application.yml
文件編輯, 就會提示字段. 提示: 輸入你在Bean
中配置的prefix
, 就會提示
4)提示: 如果還沒有提示, 可以安裝一個yaml
插件來搞定.
🔜 下一篇預(yù)告: [即將更新,敬請期待]
📚 目錄導(dǎo)航 📚
- springboot系列一: springboot初步入門
- springboot系列二: sprintboot依賴管理
- springboot系列三: sprintboot自動配置
- springboot系列四: sprintboot容器功能
- springboot系列五: springboot底層機(jī)制實(shí)現(xiàn) 上
- springboot系列六: springboot底層機(jī)制實(shí)現(xiàn) 下
- springboot系列七: Lombok注解,Spring Initializr,yaml語法
…
💬 讀者互動 💬
在使用 Lombok 注解,Spring Initializr 和 yaml 語法的過程中,您有哪些體會或問題?歡迎在評論區(qū)留言,讓我們一起討論吧!😊