使用lombok时可以自定义get、set方法

标签: lombok  spring boot  lombok自定义方法

项目中遇到的一个问题,先把结论写在这里:

        当使用lombok时,部分get、set方法需要自定义,lombok不会再生成对应的方法。所以自己写get、set方法和lombok生成的方法不冲突。

 

可能看到这里,对于问题以及问题的结论都看得云里雾里,那么我举个列子:

在Idea里创建两个Bean类CupA和CupB,都使用@Data注解,只是CupA的cup属性的set方法自定义。

CupA.java

import lombok.Data;

@Data
public class CupA {

    public String color;

    public String cup;

    public void setCup(String cup) {
        if(cup==null || "".equals(cup))
            cup="0";
        this.cup = cup;
    }
	
}

 

CupB.java

import lombok.Data;

@Data
public class CupB {

    public String color;

    public String cup;

}

 

接下来看一下Structure这个框(使用eclipse的同鞋可以看outline这个框)。

 

不难发现,左边自定义的setCup图标和其他方法不一样,而lombok没有再生成setCup方法了。所以有自定义的方法时,lombok不再生成对应的方法。所以我们在体验lombok方便的同时,也可以愉快的自定义bean中的方法了。

 

--------------------------------------------------------------------------- 分割线 --------------------------------------------------------------------------

我在项目中遇到的问题:

        实体类B拷贝给实体类A,实体类B中的属性如果是空,则拷贝给A的时候给A的属性赋值为0;(下面用CupB、CupA表示)

        最简单的方法是,给CupB的属性赋值的时候做判断,但是一个大的项目里,CupB的使用次数是相当庞大的,所以想到修改CupA这个一劳永逸的方案。

        但是对BeanUtil方法不了解,不知道实体类自定义方法后,拷贝属性会不会报错,或者不生效啥的(这个想法是真的蠢了),自己在项目里写了两个实体类和一个main方法测试一下。

 

测试用的main方法:

import org.springframework.beans.BeanUtils;

public class Demo {
    public static void main(String[] args) {
        CupA cupA = new CupA();
        CupB cupB = new CupB();
        cupB.setCup("");
        BeanUtils.copyProperties(cupB,cupA);
        System.out.println("结果:"+cupA.getCup());
    }
}

输出结果是:

 

所以呢,知道了两件事情:

1.使用lombok时可以自定义属于自己的方法

2.bean拷贝时,当然是会使用到get、set等方法的,所以放心自定义好了,都是会执行到的。

 

所以呢,写完之后还是觉得比较蠢!!!

原文链接:加载失败,请重新获取