Logré implementar con éxito el cambio dinámico de las conexiones de bases de datos siguiendo el artículo http://blog.springsource.com/2007/01/23/dynamic-datasource-routing/.Crear dinámicamente granos de primavera y modificar propiedades en beans existentes
Pero ahora el problema es que tengo una lista de URL de base de datos en un archivo de configuración que es administrado por una aplicación heredada.
¿Hay alguna forma de crear beans en ese contexto de primavera a partir de una lista de valores (por ejemplo, Year2011DataSource, Year2012DataSource, ...) y rellenar el mapa del bean de dataSource con los beans que se acaban de crear?
<!-- Property file located in the legacy application's folder -->
<context:property-placeholder location="file:///D:/config.properties" />
<!-- Shared data source properties are read from the config.properties file -->
<bean id="parentDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" abstract="true">
<property name="driverClassName" value="${db.driver}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.password}" />
</bean>
<!-- Database urls by year -->
<bean id="Year2012DataSource" parent="parentDataSource">
<property name="url" value="jdbc:sqlserver://localhost;databaseName=DbName_v570_2012" />
</bean>
<bean id="Year2011DataSource" parent="parentDataSource">
<property name="url" value="jdbc:sqlserver://localhost;databaseName=DbName_v570_2011" />
</bean>
<bean id="Year2010DataSource" parent="parentDataSource">
<property name="url" value="jdbc:sqlserver://localhost;databaseName=DbName_v570_2010" />
</bean>
<!-- ... and so on, these should instead be populated dynamically ... -->
<!-- DbConnectionRoutingDataSource extends AbstractRoutingDataSource -->
<bean id="dataSource" class="someProject.DbConnectionRoutingDataSource">
<property name="targetDataSources">
<map key-type="int">
<entry key="2011" value-ref="Year2011DataSource" />
<entry key="2010" value-ref="Year2010DataSource" />
<!-- ... and so on, these also should instead be populated dynamically ... -->
</map>
</property>
<property name="defaultTargetDataSource" ref="Year2012DataSource" />
</bean>
añadido la versión final del código. Gracias por ayudar a la gente. – Vedran