Spring之数据源整理

 2023-09-11 阅读 25 评论 0

摘要:Spring通过数据源获取与各种数据库的连接,怎么理解数据源呢?通俗来讲,数据源可以看作是一个灵活、便捷的连接工厂,这个工厂可以根据实际需要动态地维护池中连接的数量、健康程度、事务等。在以往的应用中,我们可以通过在Web应用服务器上面

Spring通过数据源获取与各种数据库的连接,怎么理解数据源呢?通俗来讲,数据源可以看作是一个灵活、便捷的连接工厂,这个工厂可以根据实际需要动态地维护池中连接的数量、健康程度、事务等。在以往的应用中,我们可以通过在Web应用服务器上面进行配置,然后获取对应的数据源引用,对此,Spring中不但可以通过JNDI获取应用服务器的数据源,也可以在Spring容器中配置数据源,甚至还可以直接通过编码的方式创建一个数据源等,本篇博客的主要内容就是要介绍Spring那些常见的数据源;

第一,先看看Spring对于Web应用服务器提供的数据源的支持,看下面一段简单的Web应用服务器端配置(具体配置方式在此不做叙述)。

java获取数据库表字段。

由于是在服务器端配置的,所以一旦启动服务器,该数据源会自动得到创建,我们要做的事情就是在Spring侧直接获取就可以了,可以在Spring配置文件中,如下配置,正常使用就可以:

<!-- 从Web应用服务器获取配置的数据源信息 -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" p:jndiName="java:comp/env/jdbc/TestDB"/>

第二,接下来再来看看Spring框架本身提供的一个简单的数据源实现类DriverManagerDataSource,由于它并没有提供数据源连接池的功能,也就是说每次从该数据源获取连接时,都会简单地创建一个新的连接,所以它在大量连接请求的性能上表现不佳,因此Spring官方推荐它用于单元测试或简单的独立应用中,它既可以通过编码方式构建,也可以通过XML配置的方式,下面以此展示:

java本地数据库?

代码即数据结果如下:

package com.ssh.test;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class DriverManagerDataSourceConstructTest {public static void main(String[] args) {DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/ssh");dataSource.setUsername("root");dataSource.setPassword("root");System.out.println(dataSource);}
}

接下来看看XML配置方式,同样达到配置数据源效果:

java数据源。

<pre name="code" class="html"><!-- 将类路径下面的jdbc.properties里面记载的属性放置到Spring容器中 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置BasicDataSource数据源信息 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>

 

jdbc.properties配置内容如下:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/ssh
jdbc.username=root
jdbc.password=root

第三,下面介绍第三种数据源,DBCP数据源;DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所以在类路径下还必须包括commons-pool的类包,配置基本同上面XML配置:

<!-- 将类路径下面的jdbc.properties里面记载的属性放置到Spring容器中 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置BasicDataSource数据源信息 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/>
</bean>

第四,C3P0数据源,这个数据源是一个开放源代码的JDBC数据源实现项目,该数据源拥有比DBCP更丰富的配置属性,功能更强些,推荐使用这个数据源;

<!-- 将类路径下面的jdbc.properties里面记载的属性放置到Spring容器中 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置ComboPooledDataSource数据源信息 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><property name="driverClass" value="${jdbc.driverClassName}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/>
</bean>

除了上述数据源之外,还有另外几种数据源,在上述叙述中,没有说明更为细致的配置,详细配置请参照对应数据源的产品文档,本篇博客的目的就是给对Spring数据源含糊不清的,做一些引导说明,为下篇Spring和Hibernate做准备!

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/48384.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息