Lombok、Spring-Initializer 1.Lombok 1.1Lombok介紹 Lombok的作用是: 簡化Javabean的開發,可以使用Lombok的註解讓代碼更加簡潔 Java項目中,很多沒有技術含量又必須存在的代碼:比如POJO類的getter、setter、toString方 ...
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常用註解
註解 | 解釋 |
---|---|
@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即可解決