How do I get a property value from an ApplicationContext object? (not using an annotation) How do I get a property value from an ApplicationContext object? (not using an annotation) spring spring

How do I get a property value from an ApplicationContext object? (not using an annotation)


In the case where SPeL expression needs to be dynamic, get the property value manually:

somePropValue = ctx.getEnvironment().getProperty("someProp");


Assuming that the ${someProp} property comes from a PropertyPlaceHolderConfigurer, that makes things difficult. The PropertyPlaceholderConfigurer is a BeanFactoryPostProcessor and as such only available at container startup time. So the properties are not available to a bean at runtime.

A solution would be to create some sort of a value holder bean that you initialize with the property / properties you need.

@Componentpublic class PropertyHolder{    @Value("${props.foo}") private String foo;    @Value("${props.bar}") private String bar;    // + getter methods}

Now inject this PropertyHolder wherever you need the properties and access the properties through the getter methods


If you are stuck on Spring pre 3.1, you can use

somePropValue = ctx.getBeanFactory().resolveEmbeddedValue("${someProp}");