Spring boot 외부 설정 사용법

Dev. 로티·2022년 1월 17일
1

Spring boot

목록 보기
2/12
post-thumbnail

보통 운영에 필요한 설정 정보들을 properties 혹은 yml에 작성해 관리하는데, 위 파일들에 작성한 내용들을 Spring Bean으로 등록되는 클래스 내의 바인딩해 활용할 수 있다.

아래와 같은 설정 정보가 있다고 가정해보자.

#application.properties
jwt.secret-key: testSecretKey
jwt.expire: 3600


#application.yml
jwt:
	secret-key: testSecretKey
	expire: 3600

먼저 @Value 어노테이션을 사용한 예시이다.

@Component
public class JwtProperties {
 	
	@Value(“${jwt.secret-key}”)
	private String key;

	@Value(“${jwt.expire}”)
	private int expire;
	
	…
	…
}

위 방법 이외에도 클래스 파일에 직접 바인딩 시키는 방법이 있는데
@ConfigurationProperties 어노테이션을 활용하는 방법이다.
먼저 dependency에 오토 컴플릿을 지원하기 위해 아래와 같이 추가한다.

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

그 후 바인딩 시킬 클래스 파일을 Bean으로 등록한 후 @ConfigurationProperties 어노테이션을 추가한다(prefix를 지정).

참고) properties에 존재하는 _ 혹은 - 또한 바인딩 가능

@Component
@ConfigurationProperties(prefix=“jwt”)
public class JwtProperties {
 	
	private String key;
	private int expire;

	setter….
	
	…
	…
}

@ConfigurationProperties를 사용시 해당 설정 클래스가 유효한지 체크하는 validate 기능을 사용할 수 있다.

@Validated
@Component
@ConfigurationProperties(prefix=“jwt”)
public class JwtProperties {
 	
    @NotBlank
    private String key;
	
    @Min(...)
    @Max(...)
    private int expire;

    setter…
	
    …
    …
}

@Value 어노테이션을 사용하면 SpEL을 사용할 수 있지만, @ConfigurationProperties를 사용시 SpEL을 사용할 수 없다.

0개의 댓글