문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
springframework:springboot:properties [2018/08/30 18:06] kwon37xi [@ConfigurationProperties] |
springframework:springboot:properties [2024/06/12 09:00] (현재) kwon37xi |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== SpringBoot Properties ====== | ====== SpringBoot Properties ====== | ||
* [[springframework: | * [[springframework: | ||
+ | * [[java: | ||
+ | * [[springframework: | ||
* 보통 '' | * 보통 '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ===== 기본값 설정 ===== | ||
+ | * 이미 지정된 property 이면, 해당 값을 사용하고, | ||
+ | * '' | ||
+ | <code yml> | ||
+ | testing: | ||
+ | my: | ||
+ | username: ${external.username: | ||
+ | password: ${external.password: | ||
+ | </ | ||
+ | * [[https:// | ||
+ | |||
+ | <code yml> | ||
+ | testing: | ||
+ | my: | ||
+ | username: ${external.username: | ||
+ | password: ${external.password:# | ||
+ | </ | ||
+ | <code java> | ||
+ | @Value(" | ||
+ | private String username; | ||
+ | |||
+ | @Value(" | ||
+ | private String password; | ||
+ | </ | ||
===== profile 별 설정 ===== | ===== profile 별 설정 ===== | ||
줄 32: | 줄 63: | ||
===== profile include ===== | ===== profile include ===== | ||
* 프로필을 자동 활성화 한다. | * 프로필을 자동 활성화 한다. | ||
+ | * Spring Boot 2.3 이전에서 사용하는 방식. | ||
+ | * 2.4 부터는 [[https:// | ||
* '' | * '' | ||
spring.profiles: | spring.profiles: | ||
줄 91: | 줄 124: | ||
* [[https:// | * [[https:// | ||
* 이 경우 '' | * 이 경우 '' | ||
+ | |||
+ | ===== YAML을 '' | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | <code java> | ||
+ | @PropertySource( | ||
+ | value = " | ||
+ | factory = YamlPropertySourceFactory.class | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | <code java> | ||
+ | public class YamlPropertySourceFactory implements PropertySourceFactory { | ||
+ | |||
+ | @Override | ||
+ | public PropertySource<?> | ||
+ | throws IOException { | ||
+ | YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); | ||
+ | factory.setResources(encodedResource.getResource()); | ||
+ | |||
+ | Properties properties = factory.getObject(); | ||
+ | |||
+ | return new PropertiesPropertySource(encodedResource.getResource().getFilename(), | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
===== @ConfigurationProperties ===== | ===== @ConfigurationProperties ===== | ||
* '' | * '' | ||
줄 98: | 줄 159: | ||
compile " | compile " | ||
</ | </ | ||
+ | * '' | ||
+ | * '' | ||
+ | ===== PropertySource과 properties 로그로 남기기 ===== | ||
+ | * [[https:// | ||
+ | |||
+ | <code java> | ||
+ | @Component | ||
+ | public class LoadedConfigFileListener implements ApplicationListener< | ||
+ | |||
+ | @Override | ||
+ | public void onApplicationEvent(ApplicationReadyEvent event) { | ||
+ | MutablePropertySources propertySources = event.getApplicationContext().getEnvironment().getPropertySources(); | ||
+ | Iterator< | ||
+ | propertySourceIterator.forEachRemaining(propertySource -> log.info(" | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public int getOrder() { | ||
+ | return ConfigFileApplicationListener.DEFAULT_ORDER + 1; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
===== 모든 properties 로그로 남기기 ===== | ===== 모든 properties 로그로 남기기 ===== | ||
* [[https:// | * [[https:// | ||
- | * 아래와 같이 '' | + | * 최종적으로 결정된 properties 목록을 확인하고자 할 때, 아래와 같이 '' |
<code java> | <code java> | ||
@Component | @Component | ||
줄 124: | 줄 209: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ===== addional property 파일지정 ===== | ||
+ | * 기존 프라퍼티 파일들보다 우선순위가 높게 추가 프라퍼티 파일을 지정할 수 있다. **추가**되는 것이므로 기존 값도 계속 함께 읽는다. | ||
+ | < | ||
+ | spring.config.additional-location=classpath:/ | ||
+ | </ | ||
+ | |||
+ | ===== JSON을 통한 Override ===== | ||
+ | * JSON 으로 명령행에서 properties를 override할 수 있다. JSON 으로 여러 프라퍼티를 지정할 수 있다. | ||
+ | * 시스템 프라퍼티로 : '' | ||
+ | * 환경 변수로 : '' | ||
+ | |||
+ | |||
+ | ===== EnvironmentPostProcessor 를 통한 프라퍼티 값 후처리 ===== | ||
+ | * [[https:// | ||
+ | * 예를들면, | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * 작성한 코드를 '' | ||
+ | org.springframework.boot.env.EnvironmentPostProcessor= | ||
+ | com.baeldung.environmentpostprocessor.PriceCalculationEnvironmentPostProcessor | ||
+ | </ | ||
+ | |||
+ | ===== YAML Duration ===== | ||
+ | * Spring Boot 2.1 부터 [[https:// | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
===== 참고 ===== | ===== 참고 ===== |