[SPRING] 정적 함수에서 @Value 주석의 대안
SPRING정적 함수에서 @Value 주석의 대안
정적 변수에 @Value를 사용할 수 없습니다.
@Value("${some.value}")
static private int someValue;
static public void useValue() {
System.out.println(someValue);
}
이렇게하면 0이 인쇄됩니다. 그래서 이것에 대한 좋은 대안은 무엇입니까?
해결법
-
==============================
1.스프링은 정적 필드에 메모를 삽입합니다 (기본적으로).
스프링은 정적 필드에 메모를 삽입합니다 (기본적으로).
따라서 두 가지 대안이 있습니다.
-
==============================
2.이 간단한 트릭을 사용하여 원하는 것을 얻으십시오 (비 정적 setter에 값을 주입하고 정적 필드를 작성하는 것보다 더 좋은 방법 - 승인 된 답변에서 제안 된 것처럼).
이 간단한 트릭을 사용하여 원하는 것을 얻으십시오 (비 정적 setter에 값을 주입하고 정적 필드를 작성하는 것보다 더 좋은 방법 - 승인 된 답변에서 제안 된 것처럼).
@Service public class ConfigUtil { public static ConfigUtil INSTANCE; @Value("${some.value}) private String value; @PostConstruct public void init() { INSTANCE = this; } public String getValue() { return value; } }
다음과 같이 사용 :
ConfigUtil.INSTANCE.getValue ();
-
==============================
3.매우 자주 인스턴스화되는 클래스에서 정적이 아닌 필드를 만드는 동일한 값의 반복 주입을 방지하기 위해 해결 방법으로 간단한 Singleton ConfigUtil을 만드는 것이 좋습니다.
매우 자주 인스턴스화되는 클래스에서 정적이 아닌 필드를 만드는 동일한 값의 반복 주입을 방지하기 위해 해결 방법으로 간단한 Singleton ConfigUtil을 만드는 것이 좋습니다.
package de.agitos.app.util; import org.springframework.beans.factory.annotation.Configurable; import org.springframework.beans.factory.annotation.Value; /** * Helper class to get injected configuration values from static methods * * @author Florian Sager * */ @Configurable public class ConfigUtil { private static ConfigUtil instance = new ConfigUtil(); public static ConfigUtil getInstance() { return instance; } private @Value("${my.value1}") Integer value1; public Integer getValue1() { return value1; } }
클래스 내부에서 먼저 정적 Integer로 값을 주입하려고 시도했습니다.
private static Integer value1 = ConfigUtil.getInstance().getValue1();
from https://stackoverflow.com/questions/6897201/an-alternative-to-value-annotation-in-static-function by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 MVC - 봄 보안에 의해 파일 업로드가 차단됨 [복제] (0) | 2019.07.18 |
---|---|
[SPRING] 스프링 부트에서 추가 클래스 패스를 설정하는 방법? (0) | 2019.07.18 |
[SPRING] 스프링 부트 보안 - java.lang.IllegalArgumentException : null GrantedAuthority 콜렉션을 전달할 수 없음 (0) | 2019.07.17 |
[SPRING] 컨트롤러에서 유효성 검사 (@Valid) 전에 보안 액세스 (@Secured 또는 @PreAuthorize)를 확인하는 방법은 무엇입니까? (0) | 2019.07.17 |
[SPRING] 동기화를 사용할 때 Spring 파티션에서 예기치 않은 오류가 발생했습니다. (0) | 2019.07.17 |