😀前言
本篇博文是关于Lombok的基本介绍和基本使用,希望能够帮助到您😊
🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊
文章目录
- Lombok
- Lombok 介绍
- Lombok 作用
- SpringBoot 和IDEA 官方支持
- Lombok 常用注解
- Lombok 应用实例
- 代码实现
- 😄总结
Lombok
Lombok 介绍
Lombok 作用
- 简化JavaBean 开发, 可以使用Lombok 的注解让代码更加简洁。
- Java 项目中,很多没有技术含量又必须存在的代码:POJO 的getter/setter/toString;异常处理;I/O 流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生。
SpringBoot 和IDEA 官方支持
- IDEA 2020 已经内置了Lombok 插件
- SpringBoot 2.1.x 之后的版本也在Starter 中内置了Lombok 依赖
Lombok 常用注解
Lombok 应用实例
需求说明:使用Lombok 简化Furn.java 代码, 让代码简洁高效
代码实现
- 在pom.xml 引入lombok
<!-- 引入lombok, 版本在spring-boot-dependencies-2.5.3.pom 指定了, 把光标放在lombok ctrl+b 可以看到-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
-----------------------------------------看对应的版本---------------------------------------
- 修改Furn.java 使用Lombok 注解简化代码, 提示:可以通过idea 自带的反编译功能, 看Furn.class 的源码, 就可以看到生成的完整代码.
/**
* 解读
* 1. @Component 将Furn 注册为一个组件
* 2. @ConfigurationProperties(prefix = "furn01") 指定在application.properties 前缀
* 这样Furn 组件就会属性文件中的值绑定了
*/
@Component
@ConfigurationProperties(prefix = "furn01")
/**
* 说明:
* 1. Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}
* 2. @Data 注解等价使用了 如下注解 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode @NoArgsConstructor
*/
//@Data
//说明: @NoArgsConstructor 在编译时,会生成无参构造器, 前面说过,默认情况下,会生成一个无参构造器
//说明:当我们有其它构造器生成时,如果你希望仍然有无参构造器就需要使用@NoArgsConstructor指定一下 ,否则就会覆盖无参构造器,从而代码错误
@NoArgsConstructor
//说明:@AllArgsConstructor 在编译时,会生成全参构造器
@AllArgsConstructor
//@ToString : lombok 注解, 在编译时,生成toString, 默认情况下,会生成一个无参构造器
@ToString
@Setter
@Getter
public class Furn {
private Integer id;
private String name;
private Double price;
}
----------------反编译, 看源码-----------
@Component
@ConfigurationProperties(
prefix = "furn01"
)
public class Furn {
private Integer id;
private String name;
private Double price;
public Furn() {
}
public Furn(final Integer id, final String name, final Double price) {
this.id = id;
this.name = name;
this.price = price;
}
public String toString() {
return "Furn(id=" + this.getId() + ", name=" + this.getName() + ", price=" + this.getPrice() + ")";
}
public void setId(final Integer id) {
this.id = id;
}
public void setName(final String name) {
this.name = name;
}
public void setPrice(final Double price) {
this.price = price;
}
public Integer getId() {
return this.id;
}
public String getName() {
return this.name;
}
public Double getPrice() {
return this.price;
}
}
- 启动MainApp.java , 完成测试
- 在idea 安装lombok 插件, 不装插件也可以用基本的注解,比如@Data @Getter 等, 但是不能使用其扩展功能, 比如日志输出…, 所以我们还是安装一下,也比较简单
安装完后重启一下idea就可以使用了。
- 演示使用Lombok 支持日志输出( 建议使用slf4j), 修改HelloController.java
@Slf4j
@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody
public String hello() {
return "hello, spring boot";
}
@Autowired
Furn furn;
@RequestMapping("/furn")
@ResponseBody
public Furn furn() {
//使用Slf4j日志输出
//普通方式
log.info("furn = " + furn);
//占位用法
log.info("furn = {} ", furn);
return furn;
}
}
😄总结
- 使用Lombok 的注解可以让代码更加简洁。
- 使用Lombok 注解简化代码, 可以通过idea 自带的反编译功能, 看源码, 就可以看到生成的完整代码。
- 当我们使用@Data ,还有其它构造器生成时,无参构造器就需要使用@NoArgsConstructor指定一下 ,否则就会覆盖无参构造器,从而代码错误。
- 当使用@toString获取输出结果为空时,可能是因为没有get/set方法。
😁热门专栏推荐
SpringBoot篇
SpringBoot容器–注解的使用
SpringBoot 自动配置–常用配置
SpringBoot 依赖管理和自动配置—带你了解什么是版本仲裁
Spring Boot介绍–快速入门–约定优于配置
文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞