programing

ApplicationContext 개체에서 속성 값을 가져오려면 어떻게 해야 합니까?(주석 사용 안 함)

lastcode 2023. 8. 25. 23:41
반응형

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

반응형