Java 如何控制是否应基于活动配置文件使用Spring Boot序列化字段

Java 如何控制是否应基于活动配置文件使用Spring Boot序列化字段,java,spring,spring-boot,jackson,Java,Spring,Spring Boot,Jackson,我一直在寻找一种方法,能够在SpringBoot中使用自定义注释对我的响应模型进行注释,以控制应该使用SpringProfiles和Jackson序列化哪个字段 我知道有一个现有的注释JsonView来定义不同的视图,但这需要逻辑来处理每个模型的独立视图,而och支持这些视图 我宁愿使用一个自定义注释,该注释将获取一个(列表)概要文件,以排除/包括字段 我还考虑编写一个序列化程序,但它只控制值,而不控制整个属性,包括名称 这在某种程度上是可能的吗 class Response { va

我一直在寻找一种方法,能够在SpringBoot中使用自定义注释对我的响应模型进行注释,以控制应该使用SpringProfiles和Jackson序列化哪个字段

我知道有一个现有的注释JsonView来定义不同的视图,但这需要逻辑来处理每个模型的独立视图,而och支持这些视图

我宁愿使用一个自定义注释,该注释将获取一个(列表)概要文件,以排除/包括字段

我还考虑编写一个序列化程序,但它只控制值,而不控制整个属性,包括名称

这在某种程度上是可能的吗

class Response {

    var message: String

    @JsonExclude("production")
    var debugMessage: String? = null
}

我建议你在更高的层次上工作

我想您的响应正在被一个Web服务序列化。也许您可以使用一个实现来发送带有@JsonExclude的响应,而另一个实现不带@JsonExclude

您可以使用@Profile注释启用所需的Web服务

@RestController
@Profile("withExclude")
class WithExcludeController : IMyController {
  fun process() : ResponseWithExclude {
    // ...
  }
}

@RestController
@Profile("withoutExclude")
class WithoutExcludeController : IMyController {
  fun process() : ResponseWithoutExclude {
    // ...
  }
}

如果在多个Web服务/端点中重复使用我的任何模型,那不需要我用一个激活配置文件复制所有这些模型吗?每个激活配置文件似乎都有很多额外的代码?