Mapstruct 导致 quarkus-maven-plugin 发出 "unrecommended usage of private members" 警告
Mapstruct results in "unrecommended usage of private members" warning by quarkus-maven-plugin
如何解决 quarkus maven 插件的以下警告?
Found unrecommended usage of private members (use package-private instead) in application beans
我的代码如下所示:
@Mapper(componentModel = "cdi", uses = SampleFactory.class)
public interface SampleMapper {
// mapping functions
}
生成的 Impl class 如下所示:
@ApplicationScoped
public class SampleMapperImpl implements SampleMapper {
@Inject
private SampleFactory sampleFactory;
// mapping functions
}
警告建议将 sampleFactory 成员设为包私有。是否有可能配置它,例如带注释?
当前的 mapstruct (1.4.2) documentation 声明您只能配置注入策略。但是,配置注入成员的可见性是不可能的 - 是吗?
设置:
- quarkus-maven-插件:1.12.1
- mapstruct 1.4.2.Final
- Java 14.0.1
切换到构造函数注入策略将解决警告。 MapStruct也推荐:
It is recommended to use constructor injection to simplify testing.
私有成员的字段注入要求 CDI 实现使用反射。 Quarkus 试图避免反射,以便能够使用 GraalVM 的原生图像编译器进行编译。另外,这里根本不需要使用反射,所以我们应该避免它。
如何解决 quarkus maven 插件的以下警告?
Found unrecommended usage of private members (use package-private instead) in application beans
我的代码如下所示:
@Mapper(componentModel = "cdi", uses = SampleFactory.class)
public interface SampleMapper {
// mapping functions
}
生成的 Impl class 如下所示:
@ApplicationScoped
public class SampleMapperImpl implements SampleMapper {
@Inject
private SampleFactory sampleFactory;
// mapping functions
}
警告建议将 sampleFactory 成员设为包私有。是否有可能配置它,例如带注释? 当前的 mapstruct (1.4.2) documentation 声明您只能配置注入策略。但是,配置注入成员的可见性是不可能的 - 是吗?
设置:
- quarkus-maven-插件:1.12.1
- mapstruct 1.4.2.Final
- Java 14.0.1
切换到构造函数注入策略将解决警告。 MapStruct也推荐:
It is recommended to use constructor injection to simplify testing.
私有成员的字段注入要求 CDI 实现使用反射。 Quarkus 试图避免反射,以便能够使用 GraalVM 的原生图像编译器进行编译。另外,这里根本不需要使用反射,所以我们应该避免它。