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

当使用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等方法的,所以放心自定义好了,都是会执行到的。

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

使用lombok时可以自定义get、set方法相关推荐

  1. Spring容器加载时执行自定义的方法

    Spring容器加载时执行自定义的方法 需要实现的接口InitializingBean,ApplicationContextAware 案例 package com.djhu.research.web ...

  2. 绝地求生自定义服务器租用,绝地求生自定义服务器怎么开 自定义服务器设置方法...

    绝地求生自定义服务器怎么开呢?自定义服务器已经开启设置了,玩家们可以已自己的方式享受游戏,但一些玩家还不知道自定义服务器设置方法,那下面就来看下吧. 自定义服务器玩法介绍 当创建自己的自定义游戏时,你 ...

  3. JS 创建自定义对象的方法

    工厂模式 优点:接受参数,可以无数次的调用这个函数,创建Person对象,而每次他都可以返回一个包含三个属性一个方法的对象. 缺点:虽然解决了创建多个相似对象的问题,但是没有解决对象识别的问题(即怎么 ...

  4. 如何创建一个自定义的`ErrorHandlerMiddleware`方法

    在本文中,我将讲解如何通过自定义ExceptionHandlerMiddleware,以便在中间件管道中发生错误时创建自定义响应,而不是提供一个"重新执行"管道的路径. 作者:依乐 ...

  5. pccad自定义图框_(PCCAD自定义标题栏详细方法.doc

    PCCAD2011自定义标题栏详细方法 下面以图3-1为例说明标题栏的自定义过程. 图3-1 1.新建文件(用New 命令). 2.用绘图和文字中的相关命令设计出图3-1所示的图形.其中在使用中不变的 ...

  6. 给DataList分页有两个办法:1、自定义实现分页方法 2、用第三方控件(例如AspNetPager)

    给DataList分页有两个办法:1.自定义实现分页方法 2.用第三方控件(例如AspNetPager) 先介绍下如何自定义实现分页方法. 我的DataList分页方法的核心原理是利用PagedDat ...

  7. python导入自定义模块_ubuntu下Python导入自定义模块的方法

    ubuntu下Python导入自定义模块的方法 当在python程序中导入自定义模块时,若出现"Import Error:no module named xxx"表明系统在pyth ...

  8. idea整合EasyCode基于lombok和swagger自定义模板

    idea整合EasyCode基于lombok和swagger自定义模板 1. 实体类entity模板 2. 控制层controller模板 3. 服务接口service模板 4. 服务实现类servi ...

  9. vscode设置templates_Vscode中快速创建自定义代码模板的方法

    Vscode中快速创建自定义代码模板 一招鲜,吃遍天,学会了这个在Vscode中快速创建自定义代码模板的教程,我相信创建其它代码模板的方法你也就通个七七八八了. 我就以Vue的创建为例,不过我这个Vu ...

  10. android设置主题和自定义主题的方法

    android设置主题和自定义主题的方法 嘿嘿,书接上回,android有两种设置主题到方法,一种就是通过修改manifest文件,一种就是在通过修改我们的java代码:主题的自定义设置和样式的自定义 ...

最新文章

  1. mysql事务的优点和缺点_OLTP应用之MySQL架构选型--图文教程
  2. 【mysql】Mac下安装mysql5.7 完整步骤,大坑已解决
  3. EF6 MySQL错误之“Specified key was too long; max key length is 767 bytes”
  4. flink入门_阿里巴巴为何选择Flink?20年大佬分11章讲解Flink从入门到实践!
  5. 换个视角看中台的对与错
  6. MySQL等值连接的介绍
  7. winform 程序制作自己的数字签名(续)
  8. java web请求字符串处理_java web工作常用技能篇(三)-封装复杂请求对象2
  9. React Native的键盘遮挡问题(input/webview里)
  10. .NET环境下几种不同的邮件发送解决方案
  11. java 堆有多少个_Java堆内存的十个要点
  12. node的module.exports和exports
  13. 手把手教你Charles抓包工具使用
  14. 【UCOSIII操作系统】软件定时器篇
  15. web网页设计制作成品 ——服装明星主页(7页) 表格带留言板带音乐HTML+CSS+JavaScript
  16. 深度学习论文: Avoiding Overfitting: A Survey on Regularization Methods for Convolutional Neural Networks
  17. 要不要考博?清华姚班助理教授写了个读博决策树
  18. 3D MAX眼睛贴图制作过程
  19. Python爬取京东商品评论和图片下载
  20. 《中国通史》纪录片100集笔记(持更)

热门文章

  1. 记录下我磕磕碰碰的三个月找工作经历,BAT大厂面试总结
  2. 网络安全 实验五 :破解密码
  3. 【Matlab故障诊断分析】BP神经网络三相逆变器故障诊断研究【含源码 1736期】
  4. Unity配置JAVA环境变量
  5. OpenGL中的坐标变换、矩阵变换【转载】
  6. NUC980 DIY项目大挑战 - EtherCAT实现
  7. python网易云歌词爬虫_用python爬取网易云音乐歌曲的歌词
  8. 计算机组成原理 - 基本概念
  9. Proteus8.10软件安装教程
  10. Java 实现中文汉字转拼音