Java Mapstruct的结果是;私人会员未经推荐的使用”;quarkus maven插件发出的警告
如何解决来自quarkus maven插件的以下警告 在应用程序bean中发现私有成员的未推荐用法(改为使用包私有) 我的代码如下所示:Java Mapstruct的结果是;私人会员未经推荐的使用”;quarkus maven插件发出的警告,java,quarkus,mapstruct,Java,Quarkus,Mapstruct,如何解决来自quarkus maven插件的以下警告 在应用程序bean中发现私有成员的未推荐用法(改为使用包私有) 我的代码如下所示: @Mapper(componentModel=“cdi”,uses=SampleFactory.class) 公共接口采样映射器{ //映射函数 } 生成的Impl类如下所示: @ApplicationScoped 公共类SampleMapperImpl实现SampleMapper{ @注入 私人样本工厂样本工厂; //映射函数 } 警告建议将sample
@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
It is recommended to use constructor injection to simplify testing.
私有成员上的字段注入要求CDI实现使用反射。Quarkus试图避免反射,以便能够使用GraalVM的本机图像编译器进行编译。此外,这里根本不需要使用反射,所以我们应该避免使用反射。谢谢@rowing ghoul使用构造函数注入策略解决了这个问题。:-)你知道为什么map struct不使用这种构造函数注入策略作为默认值吗?@JaquelineSchweigert我认为字段注入对程序员来说更直观(至少对我来说是这样)。但是考虑一下它并使用DI技术一段时间,您会发现构造函数注入更容易处理。MapStruct repo中有一个功能请求: