@RequiredArgsConstructor是否跨模块保留?
我有一个非常简单的项目结构(2个maven模块(:
- 依赖性-A
- sprint引导应用程序
在依赖性A中我声明以下类:
@RequiredArgsConstructor
@RestController
@Validated
@Slf4j
public abstract class ControllerBase {}
现在在春季启动应用程序中:
@RequestMapping("/api/v1")
public class ConcreteController extends ControllerBase {
private final SomeDependency dependency
之后IntelliJ说
变量依赖关系可能未初始化
如果我从sprint引导应用程序模块检查ControllerBase的反编译版本:
@RestController
@Validated
public class ControllerBase {
private static final Logger log = LoggerFactory.getLogger(MyController.class);
public ControllerBase () {
}
}
是Lombok的限制,还是我应该以某种方式配置maven编译器插件,这样@RequiredArgsConstructor就会被保留?请告知
Lombok注释不能继承
它们是编译时指令,将代码添加到带注释的类中,而仅添加到带批注的类中
即使在同一模块中创建子类,它也不会传播。
您必须使用@RequiredArgsConstructor
对每个类进行注释。
从龙目复制过去
@RequiredArgsConstructor
为每个需要特殊处理的字段生成一个具有一个参数的构造函数。所有未初始化的final字段都会得到一个参数,以及任何标记为@NonNull
的字段,这些字段在声明时未初始化。对于那些用@NonNull
标记的字段,还会生成一个显式的null检查。如果用于标记为@NonNull
的字段的任何参数包含null,则构造函数将抛出NullPointerException。参数的顺序与字段在类中的显示顺序相匹配。