728x90
@ConfigurationProperties
1. 클래스 정의
@ConfigurationProperties("sangguk")
@Component
@Data
public class SangGukProperties {
private String name;
private int age;
private String fullName;
}
* 클래스 정의 후 빌드 시 application.properties에서 자동완성으로 사용 가능
2. properties 정의
sangguk.name=SangGuk
sangguk.age=${random.int(0,100)} //random.int(범위) 란듐
sangguk.full-name=PackSangGuk
* 범위에 공백이 있으면 안되며 properties 내에서는 모두 문자열 타입이므로 Spring boot framework에서 컨버젼을 제공
* @DurationUnit 혹은 supported unit(ns, ms, s...)등 을 통해 타입을 지정해줄 수 있음
3. 사용
@Component
public class SpringRunner implements ApplicationRunner {
@Autowired
SangGukProperties sangGukProperties;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("=======================");
System.out.println(sangGukProperties.getName());
System.out.println(sangGukProperties.getAge());
System.out.println("=======================");
}
}
* 검증을 통해 properties 값을 Type Safe하게 관리할 수 있음 > 물론 안전한건 아님
Relaxed binding
properties정의 시 해당 경우에도 바인딩 해줌
- 카멜 표기법 (camelCase)
이름이 단어+단어일 때 첫글자를 대문자, 맨 앞단어는 소문자로 표기하는 방식 - 언더바 표기법(snake_case)
단어와 단어 사이를 언더바로 연결하는 방식 - 케밥 표기법(kebab-case)
단어와 단어 사이를 대시(dash) 즉 '-'로 연결하는 방식
프로퍼티 값 검증
> @Validated 를 통해 Exception을 발생시킬 수 있음
728x90
'Spring Boot' 카테고리의 다른 글
Logging (0) | 2022.02.20 |
---|---|
프로파일 (0) | 2022.02.20 |
Spring boot 외부 설정의 우선순위 (0) | 2022.02.05 |
Spring boot 외부 설정 (0) | 2022.02.05 |
Spring boot Web Environment (0) | 2022.02.05 |
댓글