Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring @Value is not resolving to value from property file

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?

like image 676
TS- Avatar asked Apr 10 '13 22:04

TS-


People also ask

How does @value work in spring?

@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.

How does @value work in spring boot?

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).

Can I use @value in pojo?

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.


1 Answers

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(); } 
like image 144
Sachchidanand Singh Avatar answered Oct 09 '22 22:10

Sachchidanand Singh