Подсказка свойств конфигурации Spring не отображается при их определении в файле yml приложения - PullRequest
0 голосов
/ 21 февраля 2019

Я просто экспериментировал со свойствами безопасной конфигурации в Spring Boot, используя IntelliJ в качестве идентификатора.У меня возникают проблемы с получением подсказки при определении этих свойств в файле Applicatin.yml.Подсказка прекрасно работает до тех пор, пока ее простой POJO не с коллекцией бобов.Например: в отношении приведенного ниже кода, когда я указываю свойства для администраторов в файле application.yml, я просто получаю подсказку rest-api.admins.Это не ведет меня к указанию свойства внутреннего объекта внутри коллекции.enter image description here Вот мой пример кода:

@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": []
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...