blog.smart-java.nl
Ordina J-Technologies – Java Blog

Archief voor July, 2009




Annotation based value injection in Spring 2.5

Door: Michel.Schudel, 14 July 2009

De <component-scan> Spring configuratie geeft je de mogelijkheid om je java beans te annoteren met @Component, @Service, @Repository, etc. Als Spring wordt opgestart zullen deze beans automatisch door Spring worden opgetuigd. Je hoeft dan geen beandefinitie meer in je applicationContext op te nemen. Zie ook hier voor meer informatie.

Alles goed en wel, maar wat nu als je component, behalve referenties naar andere beans, ook simpele String en Integer values nodig heeft? De enige mogelijkheid die tot nu toe had is de beandefinitie alsnog in je applicationContext op te nemen.

Spring 3.0 krijgt gelukkig de annotatie @Value waarmee je dit kan bereiken. Je kan dan je method als volgt annoteren:

@Value("#{my.property}")
public void setDezeProperty(String myProperty) {
...
}

In Spring 2.5 bestaat deze voorziening nog niet, maar Op StackOverflow heeft iemand een PropertyAnnotationPlaceholderConfigurer geschreven die precies hetzelfde doet.

In Spring 2.5 kan je dan je method als volgt annoteren:

@Property(value="my.property")
public void setDezeProperty(String myProperty) {
...
}

Waarbij my.property dan de naam van een property is die uit een property file komt.