DriverManagerDataSource 和 SimpleDriverDataSource 之间的区别

Ali*_*iuk 6 spring datasource jdbc spring-jdbc

在 Spring 中,使用DriverManagerDataSourceSimpleDriverDataSource来创建一个新的数据源(给定它的 driverClassName、url、用户名和密码)有什么区别?

例如,使用 DriverManagerDataSource 您可以执行以下操作:

DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
Run Code Online (Sandbox Code Playgroud)

使用 SimpleDriverDataSource 您可以执行以下操作:

SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
Class<? extends Driver> driver = (Class<? extends Driver>) Class.forName(driverClassName);
dataSource.setDriverClass(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
Run Code Online (Sandbox Code Playgroud)

stu*_*n3k 2

从描述的角度来看,几乎没有什么区别。主要区别是概念上的,并在 OSGi 环境中发挥作用 - 引用DriverManagerDataSource javadoc

在特殊的类加载环境(例如 OSGi)中,此类实际上被 SimpleDriverDataSource 取代,因为 JDBC DriverManager 的一般类加载问题可通过直接使用 Driver 来解决(这正是 SimpleDriverDataSource 所做的)。