스프링에서 외부설정을 조회하는 방법
@Value@ConfigurationPropertiesEnvironment

getProperty(key, type)
getProperty()메서드를 매번 사용하는 것은 번거로움@Value
사용


@Value**로 읽어올 수 있음${}**로 감싸지 않고 작성한 경우 문자 그대로를 바인딩${}**를 사용해서 key를 넣어주면 받는 필드 변수 타입으로 외부 설정을 받을 수 있음${}**내부에 작성한 값을 후처리기를 통해 변환하여 처리하므로 변수 final 설정이 불가능${key: (기본값)}**를 통해 기본값을 설정@ConfigurationProperties


스프링은 외부 설정의 묶음 정보를 객체로 바인딩하며 타입 안전한 설정 속성이라고 함
객체를 사용하면 타입을 사용할 수 있으며, 타입이 잘못 들어오는 문제도 방지
Prefix


@ConfigurationProperties 어노테이션을 사용하면, 해당 객체는 설정 정보를 바인딩할 객체라는 것을 명시하게 됨my.datasource.XXX**형식으로 작성된 설정정보는 해당 객체를 통해 바인딩하겠다고 명시@EnableConfigurationProperties**를 통해 해당 객체를 활성화하면 빈으로 등록되어 원하는 곳에서 주입받아 사용할 수 있게됨@ConfigurationPropertiesScan
@ConfigurationProperties를 작성해도 @EnableConfigurationProperties를 통해 활성화를 해야 했는데@ConfigurationProperties를 모두 활성화해줄 수 있음바인딩 과정
@ConstructorBinding
@DefaultValue
@Value어노테이션은 기본값을 설정할 수 있었는데@DefaultValue("default") 를 통해 가능하며, 이 명령은 기본값으로 **“default”**를 선언자바 빈 검증기
참조: 자바 빈 검증기
설치
implementation: 'org.springframework.boot:spring-boot-starter
-validation'
사용
@Validated 어노테이션을 통해 활성화@NotEmpty: 해당 값이 반드시 있어야함@Min: 해당 필드의 최소값 명시@Max: 해당 필드의 최대값 명시@DurationMin(seconds = 1): 해당 필드는 최소 1초의 값만 가짐@Profile

@Conditional어노테이션을 사용해서 조건에 따라 작동