@Configuration @EnableConfigurationProperties(DruidProperties.class) public class YamlDynamicDataSourceProvider implements DynamicDataSourceProvider { @Autowired DruidProperties druidProperties; @Override public Map<String, DataSource> loadDataSources() { Map<String, DataSource> ds = new HashMap<>(druidProperties.getDs().size()); try { Map<String, Map<String, String>> map = druidProperties.getDs(); Set<String> keySet = map.keySet(); for (String s : keySet) { DruidDataSource dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(map.get(s)); ds.put(s, druidProperties.dataSource(dataSource)); } } catch (Exception e) { e.printStackTrace(); } return ds; }
时间: 2024-04-02 22:33:31 浏览: 21
这是一个实现了 DynamicDataSourceProvider 接口的类,用于加载多个数据源。该类使用了 Spring Boot 的注解 @Configuration 和 @EnableConfigurationProperties(DruidProperties.class),并通过 @Autowired 注解注入了 DruidProperties 类的实例 druidProperties。
该类实现了 loadDataSources() 方法,该方法通过读取 DruidProperties 类中的 ds 属性,即配置文件中配置的多个数据源信息,使用 DruidDataSourceFactory.createDataSource() 方法生成 DruidDataSource 对象,并将其加入到一个 Map 类型的 ds 中。最后返回该 Map 对象,其中 key 为数据源名称,value 为该数据源对应的 DataSource 对象。
通过使用该类,可以实现在运行时动态加载多个数据源,实现多数据源的切换。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)