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?
@Value is a Java annotation that is used at the field or method/constructor parameter level and it indicates a default value for the affected argument. It is commonly used for injecting values into configuration variables - which we will show and explain in the next part of the article.
One of the most important annotations in spring is @Value annotation which is used to assign default values to variables and method arguments. We can read spring environment variables as well as system variables using @Value annotation. It also supports Spring Expression Language (SpEL).
For the record, the specification of what a POJO is, means that the class cannot contain pre-specified annotations. So even in another world where @Value could work on a non-spring bean, it would still, by definition, break the POJO aspect of the class.
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(); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With