Spring框架(JavaEE开发进阶Ⅲ)—配置数据源

本文介绍了Spring框架下三种数据源配置方法:通过JNDI获取数据源、使用数据源连接池(如DBCP)、基于JDBC驱动定义数据源。重点讨论了如何在Spring中配置这些数据源,并给出了具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、主要内容

1、使用JNDI数据源
2、使用数据源连接池
3、基于JDBC驱动的数据源

二、前言

1、每种Spring DAO支持方式都需要先配置一个数据源
2、Spring提供在Spring上下文中配置数据源Bean的方式
1)通过JNDI查找数据源
2)连接池数据源
3)通过JDBC驱动程序定义数据源
3、对于生产环境中的应用,首选从连接池获取连接的数据源,比如通过应用服务器的JNDI来获取连接池中的数据源

三、使用JNDI数据源

1、JavaEE应用服务器允许通过JNDI获取数据源,优势是数据源完全独立于应用程序而管理
2、应用服务器中管理的数据源通常以池的方式组织,具备更好的性能,并且支持系统管理员热切换
3、Spring中,可以像使用Bean那样配置JNDI中数据源的引用,装配到需要的类中
4、位于jee命名空间的<jee:jndi-lookup>元素可用于检索JNDI中的任何对象(包括数据源)并将其用于Spring Bean中
例子:
<jee:jndi-lookup id="dataSource"
    jndi-name="/jdbc/MyTwitterDS"
    resource-ref="true"/>
1)jndi-name属性指定JNDI中资源的名称
2)如果应用程序运行在Java应用程序服务器中,则将resource-ref属性设为true,这样给定的jndi-name会自动添加Java:comp/env前缀

四、使用数据源连接池

1、JNDI查找之后的选项是直接在Spring中配置数据源连接池
2、Spring未提供数据源连接池实现,而Jakarta Commons Database Connection Pooling(DBCP)是很好的选择
3、DBCP包括多个提供连接池功能的数据源,其中BasicDataSource最常用,很容易在Spring中配置
例子:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ex"/>
    <property name="username" value="system"/>
    <property name="password" value="iotek"/>
    <property name="initialSize" value="5"/>
    <property name="maxActive" value="10"/>
</bean>

五、基于JDBC驱动的数据源

1、Spring中通过JDBC驱动定义数据源是最简单的配置方式(没有提供连接池功能),生产环境勿用
2、Spring提供了两种数据源对象供选择
1)DriverManagerDataSource:每个连接请求都返回一个新建连接
2)SingleConnectionDataSource:每个连接请求都返回同一个连接
例子:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe"/>
    <property name="username" value="system"/>
    <property name="password" value="iotek"/>
</bean>
3、生产环境,应该使用数据源连接池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值