Jan Zyka
Jan Zyka

Reputation: 17888

Spring per-environment configuration where PropertyPlaceholder is not enough

I am configuring my spring application per-environemnt and I came to following problem:

As long as the environment changes just bean constructor/properties values I am fine with using PropertyPlaceholderConfigurer.

Now I am facing the fact that the bean structure itself change in different environemnts. E.g. in test environemnt I define single bean where in production environment I define another bean of same interface which requires property of type List set - in another words different structure where PropertyPlaceholderConfigurer can't really help.

I went with defining per-environment spring xml configuration importing it via <import resource="myDefinition-${Environment}.xml />. This is also fine until I want have it optional. The resource I am defining there is @Autowired(required = false) to another bean.

Since <import ... /> doesn't allow optional attribute (as can be seen here: https://jira.springsource.org/browse/SPR-1624) I ended up having empty .xml configuration files for environemnts where I don't require having that bean. This is somewhat inconvenient.

Could anyone advice on best practice in such scenario?

Thanks.

Upvotes: 1

Views: 1645

Answers (1)

Chris Beams
Chris Beams

Reputation: 1483

Bean definition profiles, introduced in Spring 3.1 are designed to solve just this kind of problem. See http://static.springsource.org/spring/docs/3.1.0.RC2/spring-framework-reference/html/new-in-3.1.html

Upvotes: 4

Related Questions