I've had this working in some other project before, I am just re-doing the same thing but for some reason it's not working. The Spring @Value
is not reading from property file, but instead it's taking the value literally
AppConfig.java
@Component
public class AppConfig
{
@Value("${key.value1}")
private String value;
public String getValue()
{
return value;
}
}
applicationContext.xml:
<context:component-scan
base-package="com.test.config" />
<context:annotation-config />
<bean id="appConfigProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:appconfig.properties" />
</bean>
appconfig.properties
key.value1=test value 1
In my controller, where I have:
@Autowired
private AppConfig appConfig;
The application starts just fine, but when I do
appConfig.getValue()
it returns
${key.value1}
It doesn't resolve to the value inside the properties file.
Thoughts?
I also found the reason @value
was not working is, @value
requires PropertySourcesPlaceholderConfigurer
instead of a PropertyPlaceholderConfigurer
. i did the same changes and it worked for me, i am using spring 4.0.3 release.
I configured this using below code in my configuration file -
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}