5

I have 2 property files a.properties and b.properties I've added the to application context as:

<context:property-placeholder location="classpath:a.properties" />
<context:property-placeholder location="classpath:b.properties"/>

First file with properties contains db connection details(this works well) Second - contains properties that are used by some specific bean. In that bean I use these properties via @Value annotation

@Value("#{qw.er}")
private String someA;    
@Value("#{as.df}")
private String someB;

However I get exception during startup:

 org.springframework.expression.spel.SpelEvaluationException: 
EL1008E:(pos 0): Field or property 'qw' cannot be found on object of type 
'org.springframework.beans.factory.config.BeanExpressionContext'

What I'm doing wrong?

Is it possible yo use 2 context:property-placeholder in one file?

PS: Properties qw.er and as.df exist only in file b.properties

maks
  • 5,911
  • 17
  • 79
  • 123
  • Check out [this](http://stackoverflow.com/questions/317687/how-can-i-inject-a-property-value-into-a-spring-bean-which-was-configured-using). You can use `@Value("#{myProperties['github.oauth.clientId']}")` – GokcenG Jul 17 '13 at 12:37
  • actually, haven't understood what is `myProperties` in `@Value("#{myProperties['github.oauth.clientId']}")` – maks Jul 17 '13 at 12:56
  • Sorry I've misunderstood your question. You can use `` and then `@Value("#{config['as.df']}")` will be helpful. I will look for usage of ` – GokcenG Jul 17 '13 at 13:02
  • am I right? when using property-placeholder one should use ${} as placeholders, but not #{} – maks Jul 17 '13 at 13:09
  • Yes it seems you are right. I've added an answer with a blog that explains mechanism. – GokcenG Jul 17 '13 at 13:11

1 Answers1

9

It is explained here

After defining your properties you should use

@Value("${qw.er}")
private String someA;

Notice $ sign.

GokcenG
  • 2,771
  • 2
  • 25
  • 40