我有一个POJO Deatils 有以下字段。 1. 字符串名称 2. String Add 3.String Phone. 对于配置文件'x',前两个字段应该在XML中加入,对于其他配置文件,第一和最后一个字段应该在XML中加入。
我觉得最好不要使用Marshaller。它可能是棘手的扩展和定制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();
}
}