martes, diciembre 05, 2006

Nuevo tipo de configuración basado en anotaciones para Spring


Como ya saben, hay una nueva forma de configurar Spring. XML es el tipo de configuración mas utilizada para Spring, pero con este nuevo tipo, basado en anotaciones, podemos cambiar algo del "infierno xml". Dejaremos en paz la configuración mediante Groovy, al menos por ahora.
Los desarrolladores por ejemplo, pueden utilizar esto para alguna forma de configuración interna, dejando la configuración xml para infraestructura.
Pueden mirar en la web del proyecto las novedades, pero imaginen un xml como este:

<beans>
<bean id="myCompany" class="package.Company"/>
<bean id="employee" class="Employee" scope="prototype">
<property name="company" ref="myCompany"/>
</bean>
</beans>

podría hacerse así:

@Configuration
public class AppConfiguration {
@Bean
public Company myCompany() {
return new Company();
}

@Bean(scope = Scope.PROTOTYPE)
public Employee employee() {
Employee employee = new Employee();
employee.setCompany(myCompany());
return employee;
}
}

iniciando mas tarde un ApplicationContext con un bean ConfigurationPostProcessor, pudiendo incluso mezclar beans de ambos métodos:

<beans>
<bean class="package.AppConfiguration"/>
<bean class="org.springframework.beans.factory.java.ConfigurationPostProcessor"/>
<bean class="package.OtherClass">
<property name="employee" ref="employee"/>
</bean>
</beans>

Rod también nos muestra un nuevo application context (por Costin Leau):

ApplicationContext oneConfig =
new AnnotationApplicationContext(SimpleConfiguration.class.getName());

y

ApplicationContext aBunchOfConfigs =
new AnnotationApplicationContext("**/configuration/*Configuration.class");

Dejaremos a nuestra imaginación una forma de configuración mas dinámica todavía, mezclando loops y if/thens en el bean de configuración!
El código puede ser encontrado aquí. Que lo disfruten!