首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java对象属性复制组件-Mapstruct的项目改造指南

    另外,由于编译期间就生成了代码,所以如果有任何问题,编译期间就可以提前暴露,这对于开发人员来讲就可以提前解决问题,而不用等到代码应用上线了,运行之后才发现错误。...如果项目中没有用到lombok,下面的lombok相关配置可以删除;如果用到lombok,由于MapStruct和Lombok都会在编译期间生成代码,为解决冲突使用如下配置即可。...组件,之后调用处只需要使用@Autowired,即可引入该类实例 * NullValuePropertyMappingStrategy.IGNORE:如果遇到旧对象属性为null,则跳过该属性赋值给新对象...解决方法:在继承层次结构的所有类(即LoginEventDto和UserDto)都需要使用@SuperBuilder可以,(类UserDto的@Builder要去掉)但这个@SuperBuilder只在更高的...lombok版本才有,所以才升级了lombok版本。

    3.5K41

    @Builder不好用,试试@SuperBuilder

    image-20210103161952259 给BaseDTO上加上Builder注解也不会有任何效果。事实上,Builder注解只管承接注解的这个类,而不会管他的父类或者子类。...试试SuperBuilder吧 这个问题在lombokv1.18.2 版本之前其实很难办,但是在这个版本官方引入了一个新的注解@SuperBuilder,无法build父类的问题迎刃而解 The @SuperBuilder...按照官方文档的说法,为了能够使用build方法,只需要在子类和父类上都加@SuperBuilder注解,我们试一下 ?...我们可以翻一下Lombok的源码,Lombok对所有的注解都有两套实现,javac和eclipse,由于我们的运行环境是Idea所以我们选择javac的实现,javac版本的实现在lombok.javac.handlers.HandleBuilder...翻一下@SuperBuilder的源码,核心逻辑在lombok.javac.handlers.HandleSuperBuilder#handle // 巴拉巴拉省略 JCClassDecl td = (

    2.4K20

    SpringBoot系列之对Excel报表的校验提示

    最近在做一个一对多excel类型的报表,如果excel报表数据填错了,要对其进行校验,然后返回给前端,做一个表格显示错误信息,excel报表数据读取的可以参考我上篇博客,链接 Excel格式类似于,维度是以合并单元行为准...,如图,数据会读取到3条,然后有错误,就一行一行显示 错误信息类: package com.example.easyexcel.model.vo; import lombok.AllArgsConstructor...; import lombok.Data; import lombok.ToString; import lombok.experimental.SuperBuilder; import javax.validation.constraints.NotBlank...; import java.util.List; @Data @SuperBuilder(toBuilder = true) @AllArgsConstructor @NotBlank @ToString...package com.example.easyexcel.model.dto; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data

    59710

    大家都在使用 @Builder ,我为什么建议你谨慎使用 @Builder

    前言hello,大家好,我是你们的老朋友 Lorin,本周在开发中使用 @Builder (@Builder 是一个注解,通常与 Lombok 这种 Java 代码生成工具一起使用,可以帮助简化 Java...类的构建器模式(Builder Pattern)的使用和生成)的时候出现了一个默认值丢失事件,顺便借这个机会研究了一下 @Builder ,特此分享给大家,先说结论:建议在日常开发中谨慎使用 @Builder...- 继承关系时,子类需要使用 @SuperBuilder- 设置默认值需要使用 @Builder.Default需要额外创建 Builder 对象。...补充一点:@Builder 我们可以用上面的的两种方式进行替代,在一些字段不可变的场景你甚至可以使用 @Getter @Setter 进行细化处理字段,毕竟 @Data 会暴露所有字段的访问和修改。...我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。

    1.1K20

    【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题

    ,然后以该字段为元素产生一个构造函数。...= {"name"}, //排除某些字段 of = {"age"}, //只使用某些字段 callSuper = true //是否让父类字段也参与 默认false )...@Delegate 注释的属性,会把这个属性对象的公有非静态方法合到当前类 代理模式,把字段的方法代理给类,默认代理所有方法。...和@Value也有这功能 @SuperBuilder 本以为它是支持到了父类属性的builder构建,但其实,我们还是等等吧 目前还不好使 @UtilityClass 工具类 会把所有字段方法static...@builder注解影响设置默认值的问题 例子如下,本来我是想给age字段直接赋一个默认值的: 没有使用lombok,我们这么写: public static void main(String[]

    3.5K20

    lombok注解笔记

    设置为true,直接访问字段,不调用getter exclude:此处列出的任何字段都不会在生成的equals和hashCode中使用。...foo=" + this.getFoo() + ")"; } } @var 作用 和val一样,官方文档中说区别就是var不加final修饰,但测试的效果是一样的 Experimental注解 在lombok.experimental...@Delegate 作用 代理模式,把字段的方法代理给类,默认代理所有方法 参数 types:指定代理的方法 excludes:和types相反 例子 public class Example {...PREFIX_FOO_SUFFIX = "foo"; private String foo; public Example() { } } @Helper 作用 方法内部的类方法暴露给方法使用...NonFinal 作用 设置不为Final,@FieldDefaults和@Value也有这功能 @PackagePrivate 作用 设置为private,@FieldDefaults和@Value也有这功能 @SuperBuilder

    1.6K20

    祖传shi山代码重构实战(01)-Extract Class提炼类

    给某个类添加一项新责任时,你会觉得不值得为这项责任分离出一个单独的类。于是,随着责任不断增加,这个类会变得过分复杂。很快,你的类变成一团乱麻。这样的类往往含有大量函数和数据,太大而不易理解。...一个有用的测试,问你自己,若你搬移了某些字段和函数,会发生啥事?其他字段和函数是否因此变得无意义? 另一个往往在开发后期出现的信号是类的子类化方式。...若旧类剩下的责任与旧类名称不符,为旧类改名 构造旧类时,创建一个新类的实例,建立“从旧类访问新类”的连接关系 对你想搬移的每个字段,运用【搬移字段】搬移之。每次更改后运行测试。...先复制一TelephoneNumber对象,然后将复制得到的新对象传递给用户。...此外,如果同个TelephoneNumber对象被传递给多个用户,也可能在用户之间造成别名问题 电话号码”对象一般还具有复用价值,因此我考虑将新提炼的类暴露给更多的客户端。

    58430

    set 方法是坏味道?

    很多人在写代码时,写完字段就会利用 Lombok 生成 getter、setter。setter 同 getter 一样,反映的都是对细节的暴露。...book.approve(); ... } 通过在 Book 类里引入了一个 approve 函数,将审核状态封装。...lombok.config 配置禁用@Setter: lombok.setter.flagUsage = error lombok.data.flagUsage = error 这里除了@Setter,...2 可变的数据 反对 setter,一个重要原因是它暴露了数据。 暴露数据造成的问题在于数据的修改,进而导致出现难以预料的 Bug。...4 总结 可变数据最直白的体现就是各种 setter: 破坏了封装 带来不可控的修改,给代码增添许多问题 解决它的一种方式就是移除设值函数(Remove Setting Method),将变化限制在一定的范围之内

    58740

    Lombok使用记录

    Lombok是一个Java包,可以通过注解的形式自动生成代码。通过使用lombok可以减少程序中许多样板代码,使程序更加清晰。由于项目中大量使用了lombok,在此对常用的一些lombok注解做记录。...代码如下:import lombok.Setter;import lombok.ToString;@ToString@Setterclass Parent { private int age;}@...@AllArgsConstructor生成所有字段的构造方法。三个注解都有staticName = "of"参数,可以生成private的构造函数,并使用静态方法of暴露出去。...命名为with + 字段名。即用变化的字段和原先字段生成一个新对象。...@Synchronized给实例方法和静态方法加锁,synchronized关键字在实例或类本身上加锁,而@Synchronized注解会自动生成一个私有的实例或静态变量,然后在该变量上加锁,因此它的粒度更细

    1.1K40
    领券