配置数据源

无论选择Spring的哪种数据访问方式,你都需要配置一个数据源的引用。Spring提供了在Spring上下文中配置数据源bean的多种方式,包括:

通过JDBC驱动程序定义的数据源;

通过JNDI查找的数据源;

连接池的数据源;

对于即将发布到生产环境中的应用程序,我建议使用从连接池获取连接的数据源。如果可能的话,我倾向于通过应用服务器的JNDI来获取
数据源。请记住这一点,让我们首先看一下如何配置Spring从JNDI中获取数据源。


我们可以像使用Spring bean那样配置JNDI中数据源的引用并将其装配到需要的类中。位于jee命名空间下的<jee:jndilookup>
元素可以用于检索JNDI中的任何对象(包括数据源)并将其作为Spring的bean。例如,如果应用程序的数据源配置在JNDI中,
我们可以使用<jee:jndi-lookup>元素将其装配到Spring中,如下所示:


其中jndi-name属性用于指定JNDI中资源的名称。如果只设置了jndi-name属性,那么就会根据指定的名称查找数据源。但是,如
果应用程序运行在Java应用服务器中,你需要将resource-ref属性设置为true,这样给定的jndi-name将会自动添加“java:comp/env/”前缀。

使用数据源连接池

如果你不能从JNDI中查找数据源,那么下一个选择就是直接在Spring中配置数据源连接池。尽管Spring并没有提供数据源连接池实现,但是我们有多项可用的方案,包括如下开源的实现:


Apache Commons DBCP (http://jakarta.apache.org/commons/dbcp);
c3p0 (http://sourceforge.net/projects/c3p0/) ;
BoneCP (http://jolbox.com/) 。



基于JDBC驱动的数据源

在Spring中,通过JDBC驱动定义数据源是最简单的配置方式。Spring提供了三个这样的数据源类(均位于
org.springframework.jdbc.datasource包中)供选择:
DriverManagerDataSource:在每个连接请求时都会返回一个新建的连接。与DBCP的BasicDataSource不同,
由DriverManagerDataSource提供的连接并没有进行池化管理;
SimpleDriverDataSource:
与DriverManagerDataSource的工作方式类似,但是它直接使用JDBC驱动,来解决在特定环境下的类加载问题,这样的环
境包括OSGi容器;
SingleConnectionDataSource:

在每个连接请求时都会返回同一个的连接。尽管SingleConnectionDataSource不是
严格意义上的连接池数据源,但是你可以将其视为只有一个连接的池。
以上这些数据源的配置与DBCPBasicDataSource的配置类似。例如,如下就是配置DriverManagerDataSource的方法:


与具备池功能的数据源相比,唯一的区别在于这些数据源bean都没有提供连接池功能,所以没有可配置的池相关的属性




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在分库分表中,需要配置多个数据,以便应用程序能够连接到不同的分片数据库。一般来说,配置数据需要以下几个步骤: 1. 导入相关的数据库驱动包,以便应用程序能够连接到数据库。不同的数据库有不同的驱动包,需要根据实际使用的数据库进行选择。 2. 配置数据库连接信息,包括数据库的地址、端口、用户名、密码等信息。这些信息可以保存在配置文件中,也可以在应用程序中直接硬编码。 3. 创建数据库连接池,以便应用程序能够高效地管理和复用数据库连接。连接池可以通过第三方库或应用程序框架提供的接口来创建和管理。 4. 在应用程序中使用数据,通过数据获取数据库连接,进行数据库操作。 具体地,对于Java Web应用程序来说,可以使用Java EE容器提供的JDBC数据来管理和配置数据。以Tomcat为例,配置数据的步骤如下: 1. 在Tomcat的conf目录下,创建一个名为context.xml的文件,用于配置数据。 2. 在context.xml文件中,使用JDBC数据配置参数,如下所示: ``` <Context> <Resource name="jdbc/userDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/userdb" username="dbuser" password="dbpass" maxActive="100" maxIdle="30" maxWait="10000" validationQuery="select 1" /> </Context> ``` 上面的配置中,定义了一个名为jdbc/userDB的数据,使用MySQL数据库驱动,连接到localhost上的userdb数据库。 3. 在应用程序中,使用JNDI API获取数据,并从数据中获取数据库连接,进行数据库操作。示例代码如下: ``` InitialContext ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/userDB"); Connection conn = ds.getConnection(); ``` 在分库分表的情况下,需要配置多个数据,并根据实际情况选择合适的数据进行操作。一般来说,不同的分片都有独立的数据,应用程序需要根据数据的划分规则,选择合适的数据进行操作。 在配置数据时,需要注意数据库连接的安全性和稳定性。应该使用加密的方式保存数据库的用户名和密码,避免敏感信息泄露。同时,需要设置合适的连接池参数,以避免连接泄露和资浪费,提高应用程序的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值