[SPRING] 클래스 수준 변수에서 Spring @Value 주석을 사용하는 방법
SPRING클래스 수준 변수에서 Spring @Value 주석을 사용하는 방법
클래스의 인스턴스 변수에 @Value로 삽입 된 매개 변수를 사용해야하고 모든 하위 클래스에서 해당 변수를 다시 사용할 수 있습니다.
@Value(server.environment)
public String environment;
public String fileName = environment + "SomeFileName.xls";
여기서 문제는 fileName을 먼저 초기화 한 다음 환경 주입이 일어나고 있다는 것입니다. 그래서 나는 항상 null-SomeFileName.xls를 얻고있다.
어쨌든 봄에 첫 번째 @Value를 초기화하기 위해 전달해야합니다.
해결법
-
==============================
1.그러므로 @PostConstruct를 사용할 수 있습니다. 문서에서 :
그러므로 @PostConstruct를 사용할 수 있습니다. 문서에서 :
@PostConstruct를 사용하면 속성을 설정 한 후에 수정 작업을 수행 할 수 있습니다. 한 가지 해결책은 다음과 같습니다.
public class MyService { @Value("${myProperty}") private String propertyValue; @PostConstruct public void init() { this.propertyValue += "/SomeFileName.xls"; } }
또 다른 방법은 @Autowired config-method를 사용하는 것입니다. 문서에서 :
예:
public class MyService { private String propertyValue; @Autowired public void initProperty(@Value("${myProperty}") String propertyValue) { this.propertyValue = propertyValue + "/SomeFileName.xls"; } }
차이점은 두 번째 접근법에서는 빈에 대한 추가 후크가 없으므로 자동 채워지는대로 적용한다는 점입니다.
-
==============================
2.@Value를 사용하여 성취하고자하는 것과 비슷한 소리를내는 특성 파일에서 값을 읽을 수 있습니다.
@Value를 사용하여 성취하고자하는 것과 비슷한 소리를내는 특성 파일에서 값을 읽을 수 있습니다.
xml 또는 bean 구성 메소드에서 PropertySourcesPlaceholderConfigurer를 구성하면 스프링으로 값이 설정됩니다.
@Value("${server.env}") private String serverEnv;
그리고 구성 ....
@Configuration public class Cfg { @Bean public static PropertySourcesPlaceholderConfigurer properties() { final PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer(); propertySourcesPlaceholderConfigurer.setLocation(new ClassPathResource("/foo.properties")); return propertySourcesPlaceholderConfigurer; } }
또는 xml 접근 방식
<context:property-placeholder location="classpath*:foo.properties"/>
from https://stackoverflow.com/questions/25257237/how-to-use-spring-value-annotation-in-class-level-variables by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 제어 반전과 의존성 주입의 차이점 [중복] (0) | 2019.03.14 |
---|---|
[SPRING] Spring 데이터 - 네이티브 쿼리로 페이징 할 수없는 이유 (0) | 2019.03.14 |
[SPRING] <jar-file>을 검사하는 동안 오류가 발생하여 entityManagerFactory를 만드는 동안 오류가 발생했습니다. (0) | 2019.03.14 |
[SPRING] @Transactional이 데이터베이스에 자동으로 저장되는 이유는 무엇입니까? (0) | 2019.03.14 |
[SPRING] Spring 임베디드 데이터베이스는 다른 SQL 언어를 지원합니까? (0) | 2019.03.14 |