728x90
728x90
진행하는 프로젝트 중 로컬, 개발, QA, 운영 환경에 따라 설정 값을 달리 세팅해야하는 경우가 있다.
그럴 때는 @Value 어노테이션을 이용하여 설정 파일에 선언된 값을 읽어올 수 있다.
@Value annotation 이란?
👉 설정파일(.properties / .yml)에서 설정한 내용을 주입시켜주는 어노테이션.
나는 static 함수 내에서 운영환경인 경우에만 운영 경로를 보고
그 외 환경인 경우에는 다른 경로를 보도록 코딩을 하고 싶었다.
첫번째로 든 생각은 static함수에서 사용할거니까 static 변수를 선언해서 @Value 어노테이션 쓰면 되는 거 아냐? 였다.
해보자.
@Value("${server.profile}")
private static String profile;
public static void loadPath() {
String filePath = ServletUtil.getRealPath();
if("real".equals(profile)) {
filePath += "WEB-INF/classes/test/test.txt";
} else {
filePath += "WEB-INF/classes/test/test.txt";
}
}
세상에 계속 else만 탄다.
null이다. null이야... null 어쩌면 좋니..
구글링 시작.
static 변수에는 @Value 어노테이션이 동작하지 않는다고 한다.
그럼 어떻게 하는데... ?
private static String profile;
@Value("${server.profile}")
private void setProfile(String value) {
profile = value;
}
public static void loadPath() {
String filePath = ServletUtil.getRealPath();
if("real".equals(profile)) {
filePath += "WEB-INF/classes/test/test.txt";
} else {
filePath += "WEB-INF/classes/test/test.txt";
}
}
이렇게.
static 변수는 일단 선언해두고,
getter, setter 쓰듯이 setter 메소드를 추가해서 우리가 선언한 static 변수에 직접 값이 들어가도록 하면 된다.
고민해결!
728x90
300x250
'개발' 카테고리의 다른 글
자바스크립트에서 난수 생성(Math.random vs crypto.getRandomValues) (0) | 2023.09.21 |
---|---|
자바스크립트 한글 조사 반환 (를, 가, 는, 와 / 이, 을, 은, 과) (0) | 2023.09.20 |
MyBatis에서 INSERT 후 증가된 SEQ를 가져오는 방법?! (2) | 2023.04.27 |
잘되던 이클립스 톰캣 실행이 안될 경우... (5) | 2023.03.22 |
댓글