I\'m looking to see what\'s the best way to use one DataSources in Spring but be able to switch the database from within the Java code? Below are my two DataSources and the
You can do this by extending the Spring's AbstractRoutingDataSource
and wrapping your existing data sources in it. Check this article for details. Quoting from the article:
The general idea is that a routing DataSource acts as an intermediary – while the 'real' DataSource can be determined dynamically at runtime based upon a lookup key.
Also see similar questions on SO:
There are many ways you can do this. For example, you can create a service class DatasourceSelectorService
, and based on some input (eg: configuration file/user input) it chooses the datasource's
bean accordingly.
All other classes requiring a datasource
should obtain it via this DatasourceSelectorService.