Lombok、Spring-Initializer
1.Lombok
1.1Lombok介紹
- Lombok的作用是:
- 簡化Javabean的開發,可以使用Lombok的注解讓代碼更加簡潔
- Java專案中,很多沒有技術含量又必須存在的代碼:比如POJO類的getter、setter、toString方法;例外處理;IO流的關閉操作等等,這些代碼既沒有技術含量又影響著代碼的美觀,因此Lombok應運而生,
- SpringBoot和IDEA的官方支持
- IDEA2020已經內置了Lombok插件
- SpringBoot2.1.x之后的版本也在Starter中內置了Lombok依賴
1.2Lombok常用注解
https://www.modb.pro/db/138770
https://www.cnblogs.com/zwbsoft/p/16124806.html
| 注解 | 解釋 |
|---|---|
| @Data | 只能標注到類上,綜合@Getter、@Setter、@RequiredArgsConstructor @ToString、@EqualsAndHashCode五個注解的功能, |
| @Setter | 可標注到類或屬性上,標注到類上表示此類中的所有屬性生成setter方法,標注到某個屬性上,表示此屬性生成setter方法, |
| @Getter | 可標注到類或屬性上,標注到類上表示此類中的所有屬性生成getter方法,標注到某個屬性上,表示此屬性生成getter方法, |
| @Log4j | 注解在類上,為類提供一個屬性名為log的log4j日志物件 |
| @NoArgsConstructor | 只能標注到類上,生成無參的構造方法, |
| @AllArgsConstructor | 只能標注到類上,生成包含所有屬性的構造方法,使用此注解時建議和@NoArgsConstructor結合使用,否則此類將沒有無參的構造方法, |
| @RequiredArgsConstructor | 寫在類上可以代替@AutoWired注解,需要注意的是在注入時需要用final定義,或者使用@notnull注解 |
| @Cleanup | 可以關閉流 |
| @Builder | 被注解的類加個構造者模式 |
| @Synchronized | 加同步鎖 |
| @SneakyThrows | 等同于try/catch捕獲例外 |
| @NonNull | 如果修飾于引數,當引數為null時會拋出空指標例外 |
| @Value | 只能標注到類上,綜合@Getter,@Setter,@ToString,@EqualsAndHashCode,@NoArgsConstructor五個注解的功能,和@Data不同的是,默認將所有屬性定義成final的,也就是只會生成getter方法,不會生成setter方法,如果不需要final,則給屬性加上@NonFinal注解即可, |
3.應用實體
(1)使用Lombok要先引入相關庫
<!--引入Lombok,使用版本仲裁-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
(2)User.java
package com.li.springboot.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author 李
* @version 1.0
*/
//@ToString //在編譯時,生成toString方法,默認情況下也會生成一個無參構造器
//@Data //等價于@Getter+@Setter+@RequiredArgsConstructor+@ToString+@EqualsAndHashCode
//@NoArgsConstructor //編譯時會生成無參構造器,它的意義在于顯式定義,防止會有參構造器覆寫
//@AllArgsConstructor //編譯時生成全參構造器(注意如果沒有宣告無參構造器時,全參構造器會覆寫它)
public class User {
private Integer id;
private String name;
private String address;
}
4.安裝插件
- 不安裝插件也可以使用基本的注解,比如@Data,@Getter等
- 但是不能使用其擴展功能,比如日志輸出
演示使用Lombok-@Slf4j
(1)User.java
package com.li.springboot.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.stereotype.Component;
/**
* @author 李
* @version 1.0
*/
@Component
@ToString
@Getter
@Setter
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private String address;
}
(2)控制器
package com.li;
import com.li.springboot.bean.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
/**
* @author 李
* @version 1.0
*/
@Slf4j
@Controller
public class HiController {
@Resource
private User user;
@RequestMapping("/user")
@ResponseBody
public User user() {
//使用@Slf4j日志輸出
//普通方式輸出:
log.info("user="+user);
//占位符方式輸出:
log.info("user={},myuser={}",user,user);
return user;
}
}
注意,如果以json格式回傳,那么Javabean中需要設定Getter和Setter方法,
2.Spring-Initializer
2.1Spring Initializer介紹
Spring Initializer的作用
- 程式員通過Maven Archetype 來生成Maven專案,專案原型相對簡陋,需要手動配置,比較靈活,
- 通過Spring官方提供的Spring Initializer來構建Maven專案,能完美支持IDEA和Eclipse,讓程式員來選擇需要的開發場景(starter),還能自動生成自動類和單元測驗代碼
- Spring Initializer對IDEA版本有要求,還需要注意網路問題
2.2使用演示
演示使用Spring-Initializer創建SpringBoot專案,并支持web應用場景,支持mybatis
2.2.1方式1-IDEA創建
(1)File-New-Project 創建專案
(2)選擇Spring Initializer(如果沒有看到這個選項,需要安裝Spring Initializer插件)
(3)選擇版本和依賴
(4)專案創建好之后自動生成啟動類和單元測驗代碼
2.2.2方式2-官網創建下載
(1)直接到官網去創建專案然后下載
(2)下載完畢,使用idea打開,它的結構和方式一生成的一樣
2.3注意事項和使用細節
如果通過Spring Initializer創建的pom.xml檔案報錯,可能是版本問題,解決方式是:指定版本和當前的SpringBoot一致,再重繪maven即可解決
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/547127.html
標籤:其他
下一篇:day05-2-yaml
