Я просто экспериментировал со свойствами безопасной конфигурации в Spring Boot, используя IntelliJ в качестве идентификатора.У меня возникают проблемы с получением подсказки при определении этих свойств в файле Applicatin.yml.Подсказка прекрасно работает до тех пор, пока ее простой POJO не с коллекцией бобов.Например: в отношении приведенного ниже кода, когда я указываю свойства для администраторов в файле application.yml, я просто получаю подсказку rest-api.admins.Это не ведет меня к указанию свойства внутреннего объекта внутри коллекции. Вот мой пример кода:
@ConfigurationProperties(
prefix = "rest-api",
ignoreUnknownFields = true
)
@Component
public class RestApiProperties {
private static final List<Person> DEFAULT_ADMIN = Arrays.asList(defaultAdmin());
@NestedConfigurationProperty
private Person person = new Person();
private List<Person> admins = DEFAULT_ADMIN;
public Person getPerson() {
return person;
}
public List<Person> getAdmins() {
return admins;
}
public void setAdmins(List<Person> admins) {
this.admins = admins;
}
private static Person defaultAdmin() {
Person person = new Person();
person.setName("defaultAdmin");
person.setAge(34);
person.setSex(MALE);
return person;
}
И у меня есть pojo Человек из другого класса:
public class Person {
private static final String DEFAULT_NAME = "defaultUser";
private static final int DEFAULT_AGE = 23;
private static final Sex DEFAULT_SEX = Sex.MALE;
private String name = DEFAULT_NAME;
private int age = DEFAULT_AGE;
@NestedConfigurationProperty
private Sex sex = DEFAULT_SEX;
public Sex getSex() {
return sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
Ниже класса Enum для секса
public enum Sex {
MALE, FEMALE
}
Я добавил дополнительный-spring-configuration-metadata.json и поместил его в папку META-INF.
{
"groups": [
{
"name": "rest-api",
"type": "yadavsudhir405.rest.github.com.configurationProperty.RestApiProperties"
},
{
"name": "rest-api.person",
"type": "yadavsudhir405.rest.github.com.configurationProperty.Person"
}
],
"properties": [
{
"name": "rest-api.person.name",
"type": "java.lang.String"
},
{
"name": "rest-api.person.age",
"type": "java.lang.Integer"
},
{
"name": "rest-api.person.sex",
"type": "yadavsudhir405.rest.github.com.configurationProperty.Sex"
},
{
"name": "rest-api.admins",
"type": "java.util.List<yadavsudhir405.rest.github.com.configurationProperty.Person>"
}
],
"hints": []
}