사용자 도구

사이트 도구


springframework:springboot:properties

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
springframework:springboot:properties [2021/01/15 15:05]
kwon37xi [YAML을 ''@PropertySource''로 사용하기]
springframework:springboot:properties [2021/09/28 10:15]
kwon37xi
줄 2: 줄 2:
   * [[springframework:springboot|SpringBoot]] 에서 설정 값 외재화   * [[springframework:springboot|SpringBoot]] 에서 설정 값 외재화
   * 보통 ''yml''을 이용해서 ''application.yml''로 지정한다.   * 보통 ''yml''을 이용해서 ''application.yml''로 지정한다.
 +  * ''YamlPropertiesFactoryBean''
 +  * ''PropertiesFactoryBean''
 +  * ''YamlPropertySourceLoader''
 +  * ''PropertiesPropertySourceLoader''
 +
 +===== 기본값 설정 =====
 +  * 이미 지정된 property 이면, 해당 값을 사용하고, 그게 아니면 기본값을 사용하는 구조로
 +
 +<code yml>
 +testing:
 +  my:
 +    username: ${USERNAME:user}
 +    password: ${PASSWORD:test}
 +</code>
 +  * [[https://stackoverflow.com/a/49644607/1051402|SpEL로 기본값 지정]]. SpEL은 ''@Value''로 값을 읽는 경우에만 지정 가능하며, ''@ConfigurationProperties''를 사용할 때는 안 된다. 혼란스럽기 때문에 안 사용하는게 나을듯 하다.
 +
 +<code yml>
 +testing:
 +  my:
 +    username: ${USERNAME:user}
 +    password: ${PASSWORD:#{' test'}}
 +</code>
 +<code java>
 +@Value("${testing.my.username}")
 +private String username;
 +
 +@Value("${testing.my.password}")
 +private String password;
 +</code>
  
 ===== profile 별 설정 ===== ===== profile 별 설정 =====
줄 98: 줄 127:
   * [[https://www.baeldung.com/spring-yaml-propertysource|@PropertySource with YAML Files in Spring Boot | Baeldung]]   * [[https://www.baeldung.com/spring-yaml-propertysource|@PropertySource with YAML Files in Spring Boot | Baeldung]]
  
-<code sh>+<code java>
 @PropertySource( @PropertySource(
     value = "classpath:foo.yml",      value = "classpath:foo.yml", 
     factory = YamlPropertySourceFactory.class     factory = YamlPropertySourceFactory.class
 ) )
 +</code>
 +
 +<code java>
 +public class YamlPropertySourceFactory implements PropertySourceFactory {
 +
 +    @Override
 +    public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource) 
 +      throws IOException {
 +        YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
 +        factory.setResources(encodedResource.getResource());
 +
 +        Properties properties = factory.getObject();
 +
 +        return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);
 +    }
 +}
 +
 </code> </code>
 ===== @ConfigurationProperties ===== ===== @ConfigurationProperties =====
springframework/springboot/properties.txt · 마지막으로 수정됨: 2024/03/04 16:27 저자 kwon37xi