Java Mapstruct的结果是;私人会员未经推荐的使用”;quarkus maven插件发出的警告

Java Mapstruct的结果是;私人会员未经推荐的使用”;quarkus maven插件发出的警告,java,quarkus,mapstruct,Java,Quarkus,Mapstruct,如何解决来自quarkus maven插件的以下警告 在应用程序bean中发现私有成员的未推荐用法(改为使用包私有) 我的代码如下所示: @Mapper(componentModel=“cdi”,uses=SampleFactory.class) 公共接口采样映射器{ //映射函数 } 生成的Impl类如下所示: @ApplicationScoped 公共类SampleMapperImpl实现SampleMapper{ @注入 私人样本工厂样本工厂; //映射函数 } 警告建议将sample

如何解决来自quarkus maven插件的以下警告

在应用程序bean中发现私有成员的未推荐用法(改为使用包私有)

我的代码如下所示:

@Mapper(componentModel=“cdi”,uses=SampleFactory.class)
公共接口采样映射器{
//映射函数
}
生成的Impl类如下所示:

@ApplicationScoped
公共类SampleMapperImpl实现SampleMapper{
@注入
私人样本工厂样本工厂;
//映射函数
}
警告建议将sampleFactory成员包设置为私有。是否有可能对此进行配置,例如使用注释? 当前的mapstruct(1.4.2)说明您只能配置注入策略。但是,配置注入成员的可见性是不可能的,是吗

设置:

  • 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的本机图像编译器进行编译。此外,这里根本不需要使用反射,所以我们应该避免使用反射。

谢谢@rowing ghoul使用构造函数注入策略解决了这个问题。:-)你知道为什么map struct不使用这种构造函数注入策略作为默认值吗?@JaquelineSchweigert我认为字段注入对程序员来说更直观(至少对我来说是这样)。但是考虑一下它并使用DI技术一段时间,您会发现构造函数注入更容易处理。MapStruct repo中有一个功能请求: