본문 바로가기
Spring Boot

Properties 관리

by 상국이 2022. 2. 14.
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

댓글