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 创建是不是打开与数据库的连接?的主要内容,如果未能解决你的问题,请参考以下文章

Spring基础:XML方式实现DI

Java通过DOM解析假装实现Spring中Bean注入

spring入门——3种注入方式

Spring Bean的装配方式

Spring Bean

Spring5 XML装配Bean