是否有可能使用自定义注释来注释 MapStruct 生成的类?目前我正在使用 MapStruct 和 componentModel
定义为"spring"
,例如:
@Mapper(componentModel = "spring")
public interface MyMapper {}
对于这个接口(interface),类是由MapStruct生成的:
@Component
public class MyMapperImpl implements MyMapper {}
所以我可以轻松地注入(inject)它。我想做的是用 org.springframework.context.annotation.Profile
注释生成的类注释,所以我生成的bean只有在定义了特定配置文件时才会生效,是否有可能注入(inject)这样的注释,@Profile("dev")
,以某种方式生成类?我在想org.mapstruct.DecoratedWith
注释,但我没有让它为我工作
最佳答案
目前官方 API 无法实现此操作。这个问题类似于mapstruct/mapstruct#1427 .
但是,您可以尝试使用 2 个选项来使其发挥作用。
<小时/>选项1(注释Mapper)
你可以尝试用@Profile
注解来注解MyMapper
,我不确定Spring是否会在继承树和接口(interface)中查找
选项 2(使用内部 API)
MapStruct 具有 ModelElementProcessor
它用于添加 @Component
注释。 Spring 的那个是SpringComponentModelElementProcessor
.
您可以提供自己的 componentModel
(例如 spring-dev
),它将向生成的映射器添加 @Profile
注释。
关于java - MapStruct 与 Spring Boot,使用自定义注释来注释生成的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54381689/