本文主要是介绍SpringBoot之@Builder 注解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(1)@Builder 生成的构造器不是完美的,如果没有提供必须的参数,构造器可能会创建出不完整或者不合法的对象,导致代码报错。
@Builder 注解产生的 Builder 类的构造方法默认并不能限定必传参数。
(2)有时候将@Builder 和 @Data 搭配使用,以为是一个很好的搭配,导致生成的构造器是可变的,它允许使用 setter 方法修改构造器的状态。这违反了构造器模式的原则,构造器应该是不可变的,一旦创建就不能被修改。
如果非要使用 @Builder ,那么不要用 @Data ,要用 @Getter。
(3)@Builder 生成的构造器不适合用于短暂的对象,它会增加代码的复杂度和冗余。构造器模式更适合用于生命周期较长、有多种变体的对象。有些仅仅一两个属性的类也都要用 @Builder,有一些小题大做,直接用全参的构造方法都比这更简洁。
(4)@Builder 生成的构造器不能处理抽象类型的参数,它只能接受具体类型的对象。这限制了构造器的灵活性和扩展性,不能根据不同的需求创建不同风格的对象。
(5)继承关系时,子类需要使用 @SuperBuilder。对象继承后,子类的 Builder 因为构造函数的问题,使用不当大概率会报错,并且无法设置父类的属性,还需要使用 @SuperBuilder 来解决问题。
(6)设置默认值需要使用 @Builder.Default。很容易因为对此不了解,导致默认值不符合预期导致出现BUG。
不了解底层的@Builder而去使用可能会出现奇奇怪怪的问题,使用大神封装好的东西是这样子的,在出现问题时我们就可能回去分析源码,故而知道问题所在,大家加油学习,这个内容我也是学习了大神的作品才知道的。
这篇关于SpringBoot之@Builder 注解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!