Как использовать файлы YAML с помощью Spring Framework?

Мое приложение основано на Spring, и я хотел бы загрузить файл yml с централизованного сервера, но не смог этого сделать.

Мой файл yml выглядит так:

spring:
  application:
    name: signed-in-web
  cloud:
    config:
      uri: ${server.url}
health:
  config:
    enabled: false

примечание: server.url определяется в параметрах vm. Я проверил у остальных клиентов, что свойства действительны и доступны на сервере.

Затем я попытался скопировать его в файл свойств следующим образом: application.properties

LOCATION_SEARCH=${properties.app.api-key.location-search}

У меня был класс конфигурации Java, как это:

@Profile("!test")
@ComponentScan(basePackages = { "com.company.frontend.*" })
@Configuration
@PropertySource("classpath:properties/qa_env.properties")
public class propertiesConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
        YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
        yaml.setResources(new ClassPathResource("bootstrap.yml"));
            propertySourcesPlaceholderConfigurer.setProperties(yaml.getObject());
        return propertySourcesPlaceholderConfigurer;
    }
}

Я предполагал, что это загрузит конфигурацию следующим образом:

@Value("${LOCATION_SEARCH}")
public static String LOCATION_SEARCH;

но я получаю ноль. Почему-то я не смог найти, где проблема. Будет

1 ответ

Если вы используете Spring Boot, вам просто нужно позвонить application-qa.yaml и включить qa профиль. Смотрите также spring.config а также spring.profiles в общих свойствах приложения.

В противном случае вам просто нужно объявить файл yaml в @PropertySource или же @PropertySources,

Только если вы не хотите, чтобы свойства в глобальной среде начинали нуждаться в использовании PropertiesConfigurationFactory а также YamlPropertiesFactoryBean вручную связать их.

Другие вопросы по тегам