java - 使用 Lombok 的 @SuperBuild 注释时,我可以删除子类的构造函数吗
问题描述
我是使用 Lombok 注释的新手。我的目标是通过使用 Lombok 注释来最小化任何代码样板
我有ff。我用 Lombok 注释的子类@SuperBuilder
@Service
@SuperBuilder
public class Child extends Parent{ //class doesn't contain matching constructor for autowiring (error message)
private final ChildFieldA a;
private final ChildFieldB b;
private final ChildFieldC c;
public Child(ParentField d, ParentField e, ChildField a, ChildField b, ChildField c){
super(d,e); //Expected 1 arguments but found 3 (error message)
this.a = a;
this.b = b;
this.c = c;
}
}
和抽象父类,
@SuperBuilder
public abstract class Parent{
private final ParentField d;
private final ParentField e;
}
请注意,对于 2 个类的当前定义,在 Child 类上有 2 条错误消息。如果我完全删除整个Child类的构造函数,Child 类上的注解能否@SuperBuilder
保证最终字段的初始化仍然发生?换句话说,我可以完全删除子类的构造函数并保留子类和父类的@SuperBuilder
注释吗?
我特别想用@SuperBuilder
. 我在课堂上无法混到@Builder
的地方读到。@SuperBuilder
我将不胜感激任何建议或解释。
解决方案
这取决于您的用例。如果您仅用于@SuperBuilder
以编程方式创建类的实例,则删除所有其他构造函数是合理的。
但是,@Service
表明您正在使用 Spring。Spring 不能使用构建器来执行自动装配。它只能使用基于构造函数或设置器的注入。因此,您需要一个包含所有必需 bean 的构造函数,或者为它们提供一个无参数构造函数和设置器。
推荐阅读
- bash - Linux CRON:在寻找匹配的 ``' 时出现意外的 EOF
- python - 数据严重嵌套时如何使用python获取信息
- java - 将 Zip 文件从目录 a 传输到远程位置的目录 b
- amazon-web-services - 如何从 EC2 实例中提取 ECS docker 映像?
- c# - 使用贝叶斯服务器 c# 库在 Unity3d 中实现动态贝叶斯网络
- ios - Ionic 无法模拟 ios
- swift - 从 api 下载响应时出错
- spring-boot - 在itemwriter中,春季批处理未在运行时异常上滚动
- typescript - 我如何选择角度 6 中的所有单选按钮
- android - 使用 android 更新 Firebase 数据库数据