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 |