我有一个具有以下字段的 POJO Details 。 1. 字符串名称 2. 字符串添加 3.串电话 。 对于配置文件“x”,前两个字段应在 XML 中编码(marshal),而对于其他配置文件,第一个和最后一个字段应在 XML 中编码(marshal)。 注意:对于任何配置文件,任何字段都不会为空。
最佳答案
我觉得最好不要打扰 Marshaller。扩展和自定义编码器以满足每个 Spring 配置文件的需求可能很棘手。
如果我们的目标是根据 Spring 配置文件序列化不同的有效负载,我建议可能使用一个转换器/工厂来接收 POJO(具有所有字段)并为特定的数据输出一个数据传输对象 (DTO)轮廓。
除非有另一个最终目标,否则以下方法也许可行。
public class Details { ... }
// essentially a marker interface
public interface MyDto {
}
public class DtoA implements MyDto {
private String name;
private String add;
}
public class DtoB implements MyDto {
private String name;
private String phone;
}
public interface DtoConverter {
MyDto convert(Details details);
}
public class DtoConverterA implements DtoConverter { ... }
public class DtoConverterB implements DtoConverter { ... }
@Configuration
public class MyConfiguration {
@Bean
@Profile("a")
public DtoConverter dtoConverterA() {
return new DtoConverterA();
}
@Bean
@Profile("b")
public DtoConverter dtoConverterB() {
return new DtoConverterB();
}
}
关于java - 希望根据 Spring Profile 编码不同的 POJO 字段集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62147903/