2017-03-06 14 views
1

내 응용 프로그램은 스프링을 기반으로하고 있으며 중앙 서버에서 yml 파일을로드하려고하지만 그렇게 할 수 없습니다.Spring Framework를 사용하여 YAML 파일을 사용하는 방법은 무엇입니까?

내 YML 파일은 다음과 같다 :

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

참고 : server.url은 VM 옵션에 정의되어 있습니다. 나머지 클라이언트에서 속성이 유효하고 서버에서 사용할 수 있는지 확인했습니다.

@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; 
    } 
} 

나는 이것이로드 것이라고 생각 : 은이 같은 자바 구성 클래스를했다

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

있는 application.properties :

그 다음이 같은 속성 파일을 복사하려고 다음과 같은 구성 :

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

하지만 null로 표시됩니다. 어떻게 든 문제가있는 곳을 찾을 수 없었습니다. Will

답변

1

스프링 부트를 사용하는 경우 application-qa.yaml으로 전화하고 qa 프로파일을 활성화하면됩니다. spring.configspring.profilesCommon Application Properties에 표시하십시오.

그렇지 않으면 @PropertySource 또는 @PropertySources의 yaml 파일을 선언하기 만하면됩니다.

전역 환경에서 속성을 사용하지 않으려면 PropertiesConfigurationFactoryYamlPropertiesFactoryBean을 수동으로 바인딩해야합니다.