方案三:(在登录时指定routing-key,但是数据源从不再从配置文件加载,而是改为从数据库加载 )
Spring 内置了一个 AbstractRoutingDataSource,它可以把多个数据源配置成一个Map,然后,根据不同的key返回不同的数据源。因为AbstractRoutingDatasource 也是一个DataSource接口,因此,应用程序可以先设置好key,访问数据库的代码就可以从AbstractRoutingDatasource 拿到对应的一个真实的数据源,从而访问指定的数据库。AbstractRoutingDataSource 的targetDataSources属性,该属性存放数据源属性,当把数据源放入这个Map中,就可以通过指定routing-key来切换这个Map中存放的数据源。所以可以从数据库中查询数据源信息,创建数据源放入targetDataSources,就可以实现数据源的动态加载,而不需要在配置文件中配置了。