Сопоставление свойства springboot с пространствами имен JAXB - PullRequest
1 голос
/ 05 февраля 2020

У меня есть следующий фрагмент кода:

@Data
@XmlAccessorType(value = XmlAccessType.FIELD)
@XmlRootElement(name = "loginRequest", namespace = "http://www.something.com/a")
public class LoginRequest {
    @XmlElement(namespace = "http://www.something.com/b")
    private String hello;
}

Я хочу иметь пространство имен в моем файле application.yaml, чтобы изменить этот код на:

@Data
@XmlAccessorType(value = XmlAccessType.FIELD)
@XmlRootElement(name = "loginRequest", namespace = "${something.namespace.login}")
public class LoginRequest { 
    @XmlElement(namespace = "${something.namespace.hello}")
    private String hello;
}

В идеале я хочу использовать объект Properties для значений, которые я могу иметь:

@Data
@XmlAccessorType(value = XmlAccessType.FIELD)
@XmlRootElement(name = "loginRequest", namespace = "#{namespaces.login}")
@NoArgsConstructor
public class LoginRequest {
 @XmlTransient
 public Namespaces namespaces;

 @Autowired
 public LoginRequest(Namespaces namespaces) {
     this.namespaces = namespaces;
 }

 @XmlElement(namespace = "#{namespaces.hello}")
 private String hello;

В последних двух примерах pojo - это bean-компонент Spring, который создается с помощью аннотации @Bean в классе @Configuration.

К сожалению, это не работает, так как значения никогда не вводятся. Есть ли способ для меня, чтобы внедрить эти пространства имен из файла application.yaml?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...