Java 스프링:'@Value' 주석을 사용하여 'Environment' 속성을 주입하는 방법은?
다음과 같은 구성 사용
@Component
public class SomeClass {
@Inject
private Environment env;
private String key;
@PostConstruct
private void init() {
key = env.getProperty("SOME_KEY_PROPERTY");
}
....
}
일부 속성으로 일부 필드를 할당할 수 있습니다.
이것을 할 수 있는 더 짧고 간결한 형태가 있습니까?
@Component
public class SomeClass {
@Value("#{environment.SOME_KEY_PROPERTY}")
private String key;
....
}
이 작업을 수행할 수 있어야 합니다(PropertySourcesPlaceHolderConfigurer가 등록되어 있다고 가정).
@Value("${SOME_KEY_PROPERTY}")
private String key;
다음을 사용하여 기본값을 설정할 수 있습니다.
@Value("${SOME_KEY_PROPERTY:default-value}")
변수가 정의되지 않은 경우 기본값을 제공하는 것이 유용할 수도 있습니다.
@Value("${some_property:default_value}")
private String key;
그렇지 않으면 언제든지 예외가 발생합니다.some_property정의되지 않았습니다.
default_value또한 공백일 수 있습니다. 이 경우에는 다음과 같이 동작합니다.some_property선택 사항:
@Value("${some_property:}")
private String key;
(콜론에 주의)
기본값에 특수 문자(점, 콜론 등)가 포함된 경우 다음과 같이 SpEL로 래핑합니다.
@Value("${some_property:#{'default_value'}}")
private String key;
환경 변수를 기본값으로 추가해야 하는 경우.
@Value("${awsId:#{environment.AWS_ACCESS_KEY_ID}}")
@Value("${awsSecret:#{environment.AWS_SECRET_ACCESS_KEY}}")
이것은 두 개의 이전 답변을 조합한 것입니다.
스프링 부트에서 속성 값을 재정의하는 방법은 17가지가 있으며, 그 중 하나가 환경 변수입니다(공식 문서의 항목 10).
유일한 요령은 속성 이름을 대문자와 밑줄로 변환해야 한다는 것입니다.예를 들어 속성을 덮어쓰려는 경우
myApp.myProperty
그러면 당신은 환경 변수라는 것을 가져야 합니다.
MYAPP_MYPROPERTY
이것은 당신이 그냥 가질 수 있다는 것을 의미합니다.
@값("${myApp.myProperty}")
사용자 지정 없이도 환경 변수로 덮어쓸 수 있습니다.
언급URL : https://stackoverflow.com/questions/14617181/java-spring-how-to-use-value-annotation-to-inject-an-environment-property
'programing' 카테고리의 다른 글
| 인덱스가 생성되고 dbms_stats 계산이 사용된 후 쿼리 실행 속도가 느림 (0) | 2023.07.26 |
|---|---|
| @RequestMapping 주석은 @FeignClient 인터페이스에서 허용되지 않습니다. (0) | 2023.07.26 |
| 텐서플로 보폭 인수 (0) | 2023.07.26 |
| jquery를 사용하여 특정 클래스 이름을 가진 모든 확인란 가져오기 (0) | 2023.07.26 |
| SQL 시퀀스의 다음 N개 숫자 (0) | 2023.07.26 |