Компонент Spring зависит от конфигурации, которая загружает реквизиты из application.properties, но реквизиты не загружаются - PullRequest
0 голосов
/ 02 марта 2020

У меня есть некоторые трудности, и я не могу понять, как заставить это работать из-за недостатка знаний в среде Spring. То, что я пытаюсь сделать, довольно просто. Я хочу использовать вставленный AppProperties в RestTemplateComponent constuctor или getRestTemplate метод, но все реквизиты являются нулевыми. Я думаю, я понимаю, почему .. это потому, что RestTemplateComponent по порядку был загружен первым, и поэтому AppProperties реквизиты равны нулю.

Возможно ли кое-как сказать Spring, чтобы сначала загрузить AppProperties, чтобы использовать его в RestTemplateComponent.

Кстати, проблема возникает только при запуске, нет никаких проблем, когда я внедряю его в контроллер и во время запроса использую эти объекты.

application.properties

integration.url=http://...
@Configuration
@ConstructorBinding
@ConfigurationProperties("integration")
public class AppProperties {
    private String url;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}
@Component
public class RestTemplateComponent {
    private final AppProperties appProperties;

    public RestTemplateComponent(AppProperties appProperties) {
        this.appProperties = appProperties;
    }

    @Bean
    public RestTemplate getRestTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        //Custom authorization
        return restTemplate;
    }
}

1 Ответ

0 голосов
/ 03 марта 2020

Хорошо, наконец, я сделал это, добавив аннотацию @ PropertySource ({"classpath: application.properties"}) в моем классе AppProperties, а затем, когда я пытаюсь автоматически связать AppProperties в SpringBootApplication, я вижу в отладке этот реквизит инициализирован.

...