不保留多模块项目中的 Lombok @RequiredArgsConstructor
Lombok @RequiredArgsConstructor in multi-module project is not preserved
@RequiredArgsConstructor 是否跨模块保留?
我有一个非常简单的项目结构(2 个 maven 模块):
- 依赖-A
- sprint-boot-app
在 dependency-A 我声明如下 class:
@RequiredArgsConstructor
@RestController
@Validated
@Slf4j
public abstract class ControllerBase {}
现在 spring-boot-app:
@RequestMapping("/api/v1")
public class ConcreteController extends ControllerBase {
private final SomeDependency dependency
在此之后 IntelliJ 说
Variable dependency might not been initialized
如果我从 sprint-boot-app 模块检查 ControllerBase 的反编译版本:
@RestController
@Validated
public class ControllerBase {
private static final Logger log = LoggerFactory.getLogger(MyController.class);
public ControllerBase () {
}
}
是Lombok的限制还是我应该以某种方式配置maven-compiler插件,所以@RequiredArgsConstructor会被保留?请指教
复制过去
@RequiredArgsConstructor
为每个需要特殊处理的字段生成一个带有一个参数的构造函数。所有 non-initialized final 字段以及标记为 @NonNull
且未在声明位置初始化的任何字段都获得一个参数。对于那些标有 @NonNull
的字段,还会生成显式空检查。如果用于标记为 @NonNull
的字段的任何参数包含 null,则构造函数将抛出 NullPointerException。参数的顺序与字段在 class.
中出现的顺序相匹配
Lombok 注解不能被继承。
它们是编译时指令,将代码添加到带注释的 class 并且仅添加到带注释的 class.
即使您在同一模块中创建子 class,它也不会传播。
您必须用 @RequiredArgsConstructor
注释每个 class。
@RequiredArgsConstructor 是否跨模块保留?
我有一个非常简单的项目结构(2 个 maven 模块):
- 依赖-A
- sprint-boot-app
在 dependency-A 我声明如下 class:
@RequiredArgsConstructor
@RestController
@Validated
@Slf4j
public abstract class ControllerBase {}
现在 spring-boot-app:
@RequestMapping("/api/v1")
public class ConcreteController extends ControllerBase {
private final SomeDependency dependency
在此之后 IntelliJ 说
Variable dependency might not been initialized
如果我从 sprint-boot-app 模块检查 ControllerBase 的反编译版本:
@RestController
@Validated
public class ControllerBase {
private static final Logger log = LoggerFactory.getLogger(MyController.class);
public ControllerBase () {
}
}
是Lombok的限制还是我应该以某种方式配置maven-compiler插件,所以@RequiredArgsConstructor会被保留?请指教
@RequiredArgsConstructor
为每个需要特殊处理的字段生成一个带有一个参数的构造函数。所有 non-initialized final 字段以及标记为 @NonNull
且未在声明位置初始化的任何字段都获得一个参数。对于那些标有 @NonNull
的字段,还会生成显式空检查。如果用于标记为 @NonNull
的字段的任何参数包含 null,则构造函数将抛出 NullPointerException。参数的顺序与字段在 class.
Lombok 注解不能被继承。
它们是编译时指令,将代码添加到带注释的 class 并且仅添加到带注释的 class.
即使您在同一模块中创建子 class,它也不会传播。
您必须用 @RequiredArgsConstructor
注释每个 class。