归根结底,您的专有 API 必须使用某些凭据访问某些数据库(在某些服务器上可用)。你只是没有看到这一点。在 Spring 中,您必须首先定义一些DataSource
. 要么使用现有的库,如dbcp、bonecp或c3p0 ,要么使用您的应用程序服务器通过jndi提供的库。只要他们实现DataSource
接口,您选择哪种方法都没有关系。太多了,无法详细解释每一个。
一旦你DataSource
设置了 bean,我强烈推荐使用JdbcTemplate
它来简化你的 JDBC 代码,例如:
List<Map<String,Object>> res = jdbcTemplate.queryForList("select * from test");
...以及更多。
更新:如果您想将现有的遗留 API 与期望的现代框架DataSource
(几乎所有)一起使用,实现DataSource
适配器是微不足道的(剩余的方法可以保持未实现,抛出UnsupportedOperationException
):
public class LegacyDataSourceAdapter implements DataSource {
@Override
public Connection getConnection() throws SQLException {
return JdbcServiceFactory.getInstance().getDefaultDatabase().getConnectionManager().getConnection();
}
@Override
public Connection getConnection(String username, String password) throws SQLException {
return getConnection();
}
//other methods are irrelevant
}
现在只需创建一个实例LegacyDataSourceAdapter
(可能作为 Spring bean)并将其传递给JdbcTemplate
Hibernate、myBatis...
顺便说一句,您在这里有一些糟糕的 API 设计的一流示例:
Connection conn = JdbcServiceFactory.
getInstance().
getDefaultDatabase().
getConnectionManager().
getConnection();