第五章 Lombok
Lombok介绍#
- 简化 JavaBean 开发,可以使用 Lombok 的注解让代码更加简洁。
- Java 项目中,很多没有技术含量又必须存在的代码:POJO 的 getter/setter/toString;异常处理;I/O 流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok 应运而生。
SpringBoot 和 IDEA 官方支持
应用实例#
修改 pom.xml#
<!--引入lombok ,使用版本仲裁-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
修改 Furn.java#
package com.lzw.springboot.bean;
import lombok.Data;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author LiAng
*/
@Component
@ConfigurationProperties(prefix = "furn01")
//@ToString //在编译时,生成toString, 默认情况下,会生成一个无参构造器。
/**
* 说明:
* 1. Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}
* 2. @Data 注解等价使用了 如下注解 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode
* 3. @RequiredArgsConstructor : 如下图:
*/
@Data
public class Furn {
private Integer id;
private String name;
private Double price;
}
package com.lzw.springboot.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author LiAng
*/
@Component
@ConfigurationProperties(prefix = "furn01")
//@NoArgsConstructor 在编译时,会生成无参构造器,
//当我们有其它构造器生成时,如果你希望仍然有无参构造器就需要使用@NoArgsConstructor指定一下,否则有参构造器就会覆盖无参构造器,从而代码错误
@NoArgsConstructor
//@AllArgsConstructor 在编译时,会生成全参构造器
@AllArgsConstructor
public class Furn {
private Integer id;
private String name;
private Double price;
}
安装 Lombok 插件#
使用 slf4j 日志输出#
修改 HiController.java
package com.lzw;
import com.lzw.springboot.bean.Furn;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
/**
* @author LiAng
*/
@Slf4j
@Controller
public class HiController {
//需求,website属性值 从 applicaiton.properties 的 k-v
@Value("${my.website}")
private String website;
//装配到 HiController
@Resource
private Furn furn;
@RequestMapping("/hi")
@ResponseBody
public String hi(){
System.out.println(website);
return "hi springboot";
}
@RequestMapping("/furn")
@ResponseBody
public Furn furn(){
//使用 slf4j 日志输出
log.info("furn: " + furn);
//占位符方式输出
log.info("furn={} myfurn={}",furn,furn);
return furn;
}
}
修改 Furn.java
@Component
@ConfigurationProperties(prefix = "furn01")
@AllArgsConstructor
@ToString
@Setter
@Getter
public class Furn {
private Integer id;
private String name;
private Double price;
}
分类:
SpringBoot
, Java
标签:
Java
, SpringBoot
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库