ApplicationContext 개체에서 속성 값을 가져오려면 어떻게 해야 합니까?(주석 사용 안 함)
내가 가지고 있는 경우:
@Autowired private ApplicationContext ctx;
나는 getBean 방법 중 하나를 사용하여 콩과 자원을 얻을 수 있습니다.하지만, 저는 어떻게 부동산 가치를 얻을 수 있는지 알 수 없습니다.
분명히, 저는 다음과 같은 @Value 속성을 가진 새로운 콩을 만들 수 있습니다.
private @Value("${someProp}") String somePropValue;
빈 자동 배선 없이 해당 값을 가져오려면 ApplicationContext 개체에서 어떤 방법을 호출해야 합니까?
주로 @Value를 사용하는데 SPeL 표현식이 동적이어야 하는 상황이 있어서 주석만 사용할 수 없습니다.
SPeL 식이 동적이어야 하는 경우 속성 값을 수동으로 가져옵니다.
somePropValue = ctx.getEnvironment().getProperty("someProp");
Spring 3.1 이전 버전에서 고착된 경우 사용할 수 있습니다.
somePropValue = ctx.getBeanFactory().resolveEmbeddedValue("${someProp}");
이 경우를 가정하면${someProp}
속성은 PropertyPlaceHolderConfigurer에서 가져온 것이므로 문제가 발생하기 어렵습니다.Property Placeholder Configurer는 BeanFactory PostProcessor이므로 컨테이너 시작 시에만 사용할 수 있습니다.따라서 속성은 실행 시 빈에서 사용할 수 없습니다.
해결책은 필요한 속성/속성으로 초기화하는 일종의 값 홀더 빈을 만드는 것입니다.
@Component
public class PropertyHolder{
@Value("${props.foo}") private String foo;
@Value("${props.bar}") private String bar;
// + getter methods
}
이제 이 속성 주입필요한 위치에 있는 모든 속성을 보유하고 getter 메서드를 통해 속성에 액세스합니다.
언급URL : https://stackoverflow.com/questions/10822951/how-do-i-get-a-property-value-from-an-applicationcontext-object-not-using-an-a
'programing' 카테고리의 다른 글
숫자 키패드의 keyCode 값? (0) | 2023.08.25 |
---|---|
내 MariaDB SQL 쿼리가 INT를 VARCHAR로 정렬하는 이유는 무엇입니까? (0) | 2023.08.25 |
클릭 시 호출 개체를 가져오는 방법은 무엇입니까? (0) | 2023.08.25 |
스택 오버플로는 페이지 다시 로드 없이 서버 측 이벤트를 어떻게 알립니까?Firebug에 요청이 없습니다. (0) | 2023.08.25 |
open과 io의 차이.이진 스트림의 바이트 IO' (0) | 2023.08.20 |