spring 数据源 xml 中的 bean 创建是不是打开与数据库的连接?
Posted
技术标签:
【中文标题】spring 数据源 xml 中的 bean 创建是不是打开与数据库的连接?【英文标题】:Does bean creation in spring datasource xml open connection to the database?spring 数据源 xml 中的 bean 创建是否打开与数据库的连接? 【发布时间】:2014-09-23 18:52:00 【问题描述】:在 Spring 在数据源 xml 中以以下方式创建 bean 时,它是否也建立了与数据库的连接? 如果它打开一个数据库连接,那么它是如何关闭的?
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin@localhost:1521/myoracledb" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean>
rs.close();,ps.close();和 conn.close();在 finally 块中保证连接关闭,其中 rs 是 ResultSet 对象,ps 是 PreparedStatement 对象,conn 是 Connection 对象。
我正在使用普通的 JDBC(带有 Spring-Datasource.xml)和 springMVC,并且在与数据库的连接保持打开时遇到了一些问题。
还有其他方法可以确保数据库连接在此过程中保持关闭吗?
【问题讨论】:
【参考方案1】:第一件事
spring-context.xml
中的datasource
配置提供标准JDBC DataSource interface
的简单实现,通过bean properties
配置一个普通的旧JDBC Driver
,并为每个getConnection
调用返回一个new Connection
。
每次您执行datasourceObject.getConnection()
时,它都会为您建立一个新连接。
其次
在 finally 块中使用(rs.close()
、ps.close()
和)conn.close()
可确保连接关闭。
是的,这就是为什么建议关闭finally
中的connection
,因为即使在某些Exception
的情况下,finally
块也会被执行并释放资源
【讨论】:
以上是关于spring 数据源 xml 中的 bean 创建是不是打开与数据库的连接?的主要内容,如果未能解决你的问题,请参考以下文章