I have a Standalone Application, this application calculates a value (Property) and then starts a Spring Context.
My question is how can I add that calculated property to the spring context, so that I can use it like properties loaded from a property file (@Value("${myCalculatedProperty}"))?
To illustrate it a bit
public static void main(final String[] args) {
String myCalculatedProperty = magicFunction();
AbstractApplicationContext appContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
//How to add myCalculatedProperty to appContext (before starting the context)
appContext.getBean(Process.class).start();
}
ApplicationContext.xml:
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:*.properties" />
</bean>
<context:component-scan base-package="com.example.app"/>
It is a Spring 3.0 Application.
In Spring 3.1 you can implement your own
PropertySource, see: Spring 3.1 M1: Unified Property Management.First, create your own
PropertySourceimplementation:Now add this
PropertySourcebefore refreshing the application context:From now on you can reference your new property in Spring:
Also works with annotations (remember to add
<context:annotation-config/>):