- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详解SpringBoot优雅编码之Lombok加持由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文介绍了springboot优雅编码之lombok加持,分享给大家,具体如下:
概述 。
lombok 通过提供简单的语法注解形式来帮助简化消除一些必须有但显得很臃肿的 java 代码。典型的是对于 pojo对象的简化(如自动帮我们生成setter和getter等),有了lombok的加持,开发人员可以免去很多重复且臃肿的操作,极大地提高java代码的信噪比,因此我们必须尝试并应用起来! 。
intellij idea上配置 。
方法一:直接在idea界面中配置 。
首先进入plugins界面:
然后搜索并安装lombok插件:
最后不要忘了开启annotation processors的enable选项:
上述安装完成以后需要重启idea生效! 。
方法二:手动下载lombok插件安装 。
有时由于网络原因,上面方法一这种方式安装失败,因此只能手动下载安装 。
下载lombok插件:
https://github.com/mplushnikov/lombok-intellij-plugin/releases 。
plugins -> install plugin from disk... 选择下载的zip包安装 。
重启idea即可 。
ide中设置完成以后需要在pom.xml中添加如下所示的lombok依赖才能使用 。
1
2
3
4
5
|
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
<version>
1.16
.
16
</version>
</dependency>
|
lombok主要注解 。
@getter and @setter
/ 自动为属性提供 set和get 方法@tostring
/ 该注解的作用是为类自动生成tostring()方法@equalsandhashcode
/ 为对象字段自动生成hashcode和equals实现@allargsconstructor, @requiredargsconstructor and @noargsconstructor
/ 顾名思义,为类自动生成对应参数的constructor@log, @log4j, @log4j2, @slf4j, @xslf4j, @commonslog, @jbosslog
/ 自动为类添加对应的log支持@data
/ 自动为所有字段添加@tostring, @equalsandhashcode, @getter,为非final字段添加@setter,和@requiredargsconstructor,本质上相当于几个注解的综合效果@nonnull
/ 自动帮助我们避免空指针。作用在方法参数上的注解,用于自动生成空值参数检查@cleanup
/ 自动帮我们调用close()方法。作用在局部变量上,在作用域结束时会自动调用close方法释放资源下文就lombok中用的最为频繁的@data和@log注解进行代码实战! 。
@data注解使用 。
官网关于@data注解的解释如下:
all together now: a shortcut for @tostring, @equalsandhashcode, @getter on all fields, @setter on all non-final fields, and @requiredargsconstructor!
不难理解,其可以看成是多个lombok注解的集成,因此使用很方便! 。
先来创建一个pojo实体userlombok,普通的写法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
public
class
userlombok {
private
final
string name;
private
int
age;
private
double
score;
private
string[] tags;
public
userlombok(string name) {
this
.name = name;
}
public
string getname() {
return
this
.name;
}
void
setage(
int
age) {
this
.age = age;
}
public
int
getage() {
return
this
.age;
}
public
void
setscore(
double
score) {
this
.score = score;
}
public
double
getscore() {
return
this
.score;
}
public
string[] gettags() {
return
this
.tags;
}
public
void
settags(string[] tags) {
this
.tags = tags;
}
@override
public
string tostring() {
return
"dataexample("
+
this
.getname() +
", "
+
this
.getage() +
", "
+
this
.getscore() +
", "
+ arrays.deeptostring(
this
.gettags()) + “)”;
}
protected
boolean
canequal(object other) {
return
other
instanceof
dataexample;
}
@override
public
boolean
equals(object o) {
if
(o ==
this
)
return
true
;
if
(!(o
instanceof
dataexample))
return
false
;
dataexample other = (dataexample) o;
if
(!other.canequal((object)
this
))
return
false
;
if
(
this
.getname() ==
null
? other.getname() !=
null
: !
this
.getname().equals(other.getname()))
return
false
;
if
(
this
.getage() != other.getage())
return
false
;
if
(
double
.compare(
this
.getscore(), other.getscore()) !=
0
)
return
false
;
if
(!arrays.deepequals(
this
.gettags(), other.gettags()))
return
false
;
return
true
;
}
@override
public
int
hashcode() {
final
int
prime =
59
;
int
result =
1
;
final
long
temp1 =
double
.doubletolongbits(
this
.getscore());
result = (result*prime) + (
this
.getname() ==
null
?
43
:
this
.getname().hashcode());
result = (result*prime) +
this
.getage();
result = (result*prime) + (
int
)(temp1 ^ (temp1 >>>
32
));
result = (result*prime) + arrays.deephashcode(
this
.gettags());
return
result;
}
}
|
lombok加持后,写法可简化为:
1
2
3
4
5
6
7
|
@data
public
class
userlombok {
private
final
string name;
private
int
age;
private
double
score;
private
string[] tags;
}
|
在idea中使用时,lombok的注解会自动补全,如下图所示:
我们来写pojo的测试代码 。
1
2
3
4
5
6
7
8
|
public
static
void
main( string[] args ) {
userlombok userlombok =
new
userlombok("hansonwang99”);
userlombok.setage(
18
);
string[] array =
new
string[]{
"apple"
,"juice”};
userlombok.settags( array );
userlombok.setscore(
99.0
);
system.out.println(userlombok);
}
|
由下图我们可以看到idea依然可以自动为我们补全由lombok自动生成的代码:
结果打印 。
由于lombok为我们自动生成了tostring方法,因此对象的打印结果如下:
1
|
userlombok(name=hansonwang99, age=
18
, score=
99.0
, tags=[apple, juice])
|
@log注解实战 。
在我的文章 spring boot日志框架实践 一文中,我们使用log4j2来作为日志对象,其写法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
@restcontroller
@requestmapping
("/testlogging”)
public
class
loggingtestcontroller {
private
final
logger logger = logmanager.getlogger(
this
.getclass());
@getmapping
("/hello”)
public
string hello() {
for
(
int
i=
0
;i<10_0000;i++){
logger.info("info execute index method”);
logger.warn("warn execute index method”);
logger.error("error execute index method”);
}
return
"my first springboot application”;
}
}
|
若改用lombok后,写法变得更加简洁,我们只需要引入对应的@log注解即可完成log对象的生成:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
@restcontroller
@requestmapping
("/testloggingwithlombok”)
@log4j2
public
class
loggingtestcontrollerlombok {
@getmapping
("/hello”)
public
string hello() {
for
(
int
i=
0
;i<10_0000;i++){
log.info("info execute index method”);
log.warn("warn execute index method”);
log.error("error execute index method”);
}
return
"my first springboot application”;
}
}
|
怎么样,是不是一切都是那么地优雅! 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://segmentfault.com/a/1190000014247338 。
最后此篇关于详解SpringBoot优雅编码之Lombok加持的文章就讲到这里了,如果你想了解更多关于详解SpringBoot优雅编码之Lombok加持的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试扩展 Lombok通过创建我自己的注释。 我设法拥有 LombokizedEclipse.launch由 ant 创建,我写了 before和 after文件。 ant test我的注释失败
我在我的项目中广泛使用了 Lombok。我喜欢它,并希望它能得到官方支持,这样维护者就不必使用内部 API 来继续开发,但这是另一个话题了。 在使用 val 时,我经常会在编译过程中遇到以下问题: (
我发现使用 lombok @toString 和跳过空字段行为的简单方法没有成功。 我认为使用方面编程为所有函数创建我自己的 toString 函数。像那样,我可以检查所有空字段并跳过它。 但这是一种
有没有一种方法可以用lombok定义“PostConstruct”初始化方法? @RequiredArgsConstructor(staticName = "of") class MyObj {
Lombok 是一个很棒的插件,它有一个 Eclipse 和 IntelliJ 的安装程序。 AnyLogic 是基于 Eclipse 的,那么我们如何让它也在那里工作呢? 最佳答案 在 Mac 上,
我在我的项目中使用过Lombok,但是我的同事不同意使用它,他的理由是(来自controversy of lombok documents ) Both of these pieces of Proj
我一直在尝试向 Lombok 添加自定义注释。我的起点是 GitHub 上的源代码分支。 我添加了一个工作正常的注释。我可以使用包含的 eclipse 启动(或构建一个 jar 并将其交换到我的 ec
我用 Intellij 打开了 restbucks 项目。我安装了 lombok 插件,启用了注释处理。我在 Intellij 设置中使用 javac 编译器。我在项目根目录中有 lombok.con
我正在尝试利用 Lombok 的新 copyableAnnotations 功能,以便将 @JsonIgnore 和 @JsonValue 等 Jackson 注释复制到生成的 getter/with
我正在尝试在一个项目中使用 lombok,在这个项目中我有一个抽象基模型类,而其他类是从它派生的。但是我在编译时遇到错误。代码如下所示: 基础实体.java import java.util.Date
升级后,无法从 Intellij IDE 运行应用程序。 Intellij 版本:IntelliJ IDEA 2020.3(社区版) Build #IC-203.5981.155,建于 2020 年
我正在使用具有以下结构的 IntelliJ IDEA 2016.3 + lombok 插件: 编辑:这是模块内容根配置: 在 src/main/java 和 src/test/java 中一切都按预期
我在我的根目录中创建了一个 lombok.config 文件,内容如下: config.stopBubbling = true lombok.addLombokGeneratedAnnotation
我在我的 gradle 项目中使用 lombok 并想要创建一个 jar 文件,但每次执行 jar 任务(无论是否在我的控制台或 eclipse ide 中触发)我都会收到错误,在这些类中找不到我的
我需要为基于 JNI 的 native 库编译 .h 文件。在我的项目中添加一些 lombok 注释后,我无法使用 javac 编译 .h 文件。我正在使用 IntelliJ 和等级。我正在尝试在 i
@Data public abstract class B { private final String str; } @Data public class A extends B{ pr
@Builder public class ProcessorLombokBO { private String panel; private String motherBoard;
最近,我对“lombok”产生了很大的兴趣。我想通过阅读源代码来更多地了解它。 但是尝试之后,我发现这对我来说真的很难。我只发现有“javac”和“ECJ”两个实现。但不明白它是如何端到端工作的。 有
我有一个看起来像这样的类: @EqualsAndHashCode @RequiredArgsConstructor public class StatusUpdate { @Getter
这个问题在这里已经有了答案: Lombok getter/setter vs Java 14 record (6 个回答) 去年关闭。 记录是自 Java 14(第一次预览版)和 Java 15(第二
我是一名优秀的程序员,十分优秀!