Внедрение списка свойств пользовательской конфигурации SpringBoot - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь внедрить список пользовательских свойств конфигурации, которые я создал в своем файле application.properties, в контроллер. Я получаю java.lang.IllegalArgumentException: Could not resolve placeholder 'custom.resource' in value "#{${custom.resource}}" Я также пытался ввести его следующим образом: @Value("${custom.resource}"

Вот мой класс ConfigurationProperty: import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration;

import lombok.Data;

@Configuration
@ConfigurationProperties(prefix = "custom")
public class ConfigProperties {

    @Data
    public static class Resource {

        private String description;

        private String category;

        private String URL;

        private Boolean PDF;
    }
}

Мои методы получения и установки генерируются Lombok

вот как мне изложены мои свойства:

custom.resource.description[6]=Description
custom.resource.category[6]=the-category
custom.resource.url[6]=somelink.com
custom.resource.pdf[6]=false

custom.resource.description[7]=Description
custom.resource.category[7]=the-category
custom.resource.url[7]=somelink.com
custom.resource.pdf[7]=false

Я не уверен, что то, что я делаю, просто невозможно, и есть ли другой путь, по которому я должен идти, или что. Любое руководство было бы замечательно

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

, чтобы решить эту проблему, мне нужно было добавить ResourceList в класс ConfigProperty, а также вызвать список по имени компонента в @Value, используя пружину EL

import java.util.List;

import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;

import lombok.Data;

@Configuration
@ConfigurationProperties("custom")
@Data
public class ConfigProperties {

    private List<Resource> resourceList;

    @Data
    public static class Resource {

        private String description;

        private String category;

        public String url;

        public Boolean pdf;
    }
}

@Value("#{configProperties.resourceList}"), включенный в мой класс контроллера

, для всех, кому интересно, что я сделал это, посмотрев на имена бинов контекста приложения втест

0 голосов
/ 24 апреля 2018

Просто исправьте ваш класс следующим образом:

@Getter
@Component
@ConfigurationProperties(prefix = "custom")
public class ConfigProperties {

    private final Resource resource = new Resource();

    @Getter
    @Setter
    public static class Resource {

        private List<String> description = new ArrayList<>();
        private List<String> category = new ArrayList<>();
        private List<String> URL = new ArrayList<>();
        private List<Boolean> PDF = new ArrayList<>();
    }
}

Источник .

...