想根据Spring Profile来设置不同的POJO字段。

问题描述 投票:0回答:1

我有一个POJO Deatils 有以下字段。 1. 字符串名称 2. String Add 3.String Phone. 对于配置文件'x',前两个字段应该在XML中加入,对于其他配置文件,第一和最后一个字段应该在XML中加入。

java xml spring jaxb profile
1个回答
0
投票

我觉得最好不要使用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();
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.