我正在研究执行以下操作的引擎:
- 从 DB 获取数据提供者信息(告诉我要连接哪些数据库和架构详细信息以获取我的数据)
- 使用该信息连接到数据库并获取我的数据,稍后我将使用这些数据构建一些 XML 内容。
处理和隔离数据库连接管理的标准设置是创建一个 DataSource bean(我使用 Spring 连接我的组件)并将其注入我的 ProviderConfigDao(加载连接配置)和 ContentDao(使用之前加载的连接详细信息加载数据) . 这将很好地将连接的处理与实际代码隔离开来,因此 DAO 类不需要知道如何以及何时创建/打开/关闭连接等。
不幸的是,此设置不起作用,因为当我创建连接时,我需要能够指定数据库模式。我从一开始就不知道所有不同的模式,所以我无法创建一组 DataSource 对象来覆盖所有这些模式,因此必须在运行时创建 DataSource 对象,并且它的创建对用户隐藏。
我能想到的唯一解决方案是:
让另一个类/接口 (DataSourceProvider) 具有一个方法:
//Gets the connection URL as parameter (which includes the schema name). DataSource getDataSource(String url);
- 在 Spring 配置中添加一个 bean 为其提供一个自定义实现,该实现管理每个模式的 DataSource 对象的创建。
- 将该对象注入我的 DAO 类而不是 DataSource 对象。
这不是一个糟糕的解决方案,但我想知道某些开源软件包中是否已经支持类似的东西......我宁愿使用已经完成和测试的东西,然后重新发明轮子。
干杯,史蒂夫。