У меня есть следующий фрагмент кода:
@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
?