2023-12-01
작성
Spring Boot에서는 초기화 과정에서 컴포넌트를 주입할 때, 애플리케이션에 대한 Key/Value 형태의 설정을 클래스 내 변수에 값을 넣어주는 @Value 어노테이션이 존재한다.
이러한 설정은 application.properties 설정 파일에서 다음과 같은 형식으로 관리할 수 있다.
encrypt.key=1.0.2
이러한 방식을 사용하여 다른 3rd party 서비스를 사용할 때 Access Key 또는 Secret Key 같은 설정을 유용하게 할 수 있다.
static 변수에 대하여 @Value 사용하기
@Component로 선언된 클래스에서 @Value으로 변수를 설정하여 설정파일에 선언한 값을 가져올 수 있다. 다만 static 변수에서 다음과 같이 @Value 을 사용한다면 잘못된 결과를 초래하게 된다.
잘못된 예
@Component
public class EncryptUtil {
@Value("${encrypt.key}"})
public static String encryptKey;
}
위와 같이 클래스 에서 정의되어 있는 static으로 선언된 변수를 사용하면 항상 null 값이 반환된다. static 변수에 대해서는 @Value이 동작하지 않는다.
올바른 예
이를 해결하기 위해 setter 메소드를 추가하여 static 변수에 직접적으로 값을 넣을 수 있도록 하면 값을 가져와진다.
@Component
public class EncryptionUtil {
public static String encryptKey;
@Value("${encrypt.key}"})
public void setKey(String key) {
encryptKey = key;
}
}
'Backend > Spring, SpringBoot' 카테고리의 다른 글
스프링부트 Scheduler 정해진 시간마다 동작 시키는법 (2) | 2023.12.05 |
---|---|
Spring Boot 내장 톰캣 제외시키는 방법 (0) | 2023.12.05 |
스프링부트 EnvironmentPostProcessor로 사용자 정의 (0) | 2023.11.30 |
STS 4에서 war 파일로 쉽게 배포하는 방법 (배포 및 실행까지) (0) | 2023.11.29 |
스프링부트 개발환경 구성하기 (8) 동적 정렬처리 (1) | 2023.11.13 |