spring配置数据源的几种方法
2016-12-12 12:25
357 查看
1.使用JNDI
Spring应用程序通常部署在Java EE应用服务器中,如WebSphere,JBoss,Tomcat这样的Web容器。这些服务器允许配置通过jndi获取数据源。好处:
(1)数据源完全可以在应用程序之外进行管理,应用程序只需在访问数据库的时候查找数据源即可.
(2)数据源以池的方式进行组织,具备更好的性能(虽然其它方式也可以)
(3)支持系统管理员进行热切换.
配置方法:
(1)在spring配置文件中如下设置:
<jee:jndi-lookup id="datasource" jndi-name="/jdbc/SpitterDS" resource-ref="true" />
说明:
id,jndi-name根据实际情况设置。如果只设置了jndi-name属性,那么就会根据指定的名称查找数据源。如果应用程序运行在java应用服务器上,需要将resource-ref属性设置为true,这样给定的jndi-name会自动添加”java:comp/env”前缀(这个有什么意义待研究).另外,spring中的配置文件还可以使用EL表达式.
服务器中的配置以tomcat为例:
(1)tomcat目录下config目录下context.xml文件:
<Resource name="jdbc/SpitterDS" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/SpitterDS username="root" password="jdzxdb" maxActive="100" maxIdle="30" maxWait="60" wait_timeout="18800" />
其中
name 表示指定的jndi名称(需要与spring中的配置文件一致)
auth 表示认证方式,一般为Container
type 表示数据源床型,使用标准的javax.sql.DataSource
username 表示数据库用户名
password 表示数据库用户的密码
driverClassName 表示JDBC DRIVER
url 表示数据库URL地址
(2)tomcat目录下config目录下server.xml文件(与第一种类似):
2.使用第三方数据源连接池
如果你不能从JNDI中查找数据源,那么第二个选择是在spring中配置数据源连接池,spring中没有数据源连接池的实现,但是有很多解决方案,比如开源的实现:Apache CommonsDBCP(http://jakarta.apache.org/commons/dbcp)
c3p0(http://sourceforge.net/projects/c3p0/)
BoneCP(http://jolbox.com/)
举例配置DBCP BasicDataSource的方式:
<bean id="datasource" class="org.apache.dbcp.BasicDatasource" p:driverClassName="org.h2.Driver" p:url="jdbc:h2:tcp://localhost/~/spitter" p:useername:"sa" p:password="" p:initialSize="5" p:maxActive="10"/>
3.基于jdbc驱动的数据源
spring自身提供了三个没有连接池功能的数据源类(均位于org.springframework.jdbc.datasource包中)DriverManagerDatasource
SimpleDriverDatasource
SingleConnectionDatasource
直接在spring中配置即可:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" p:driverClassName="org.h2.Driver" p:url="jdbc:h2:tcp://localhost/~/spitter" p:useername:"sa" p:password="" />
与具备池功能的数据源相比,唯一的区别在于这些数据源bean都没有提供连接池功能.这种配置最好只在测试的时候使用.
4.使用嵌入式的数据源
使用环境:一般用于开发和测试嵌入式数据库(embedded database)作为应用的一部分运行而不是应用连接的独立数据库服务器
好处:每次重启应用或运行测试的时候都能够重新填充测试数据
spring的jdbc命名空间你能够简化嵌入式数据库的配置。
<jdbc:embedded-database id="datasource" type="H2"> <jdbc:script location="com/habuma/spitter/db/jdbc/schema.sql"/> <jdbc:script location="com/habuma/spitter/db/jdbc/test-data.sql"/> <jdbc:embeded-database/>
type设置为H2表明嵌入式数据库是H2(如果类型为DERBY,那么表明要使用的是Apache Derby嵌入式数据库),要确保H2在应用的类路径下(嵌入式数据库是作为应用的一部分)。多个script元素用来搭建数据库,schema.sql包含了数据库中创建表的sql,test-data.sql包含了将测试数据填充到数据库中的sql.
上面的这些配置均是xml文件的配置方式,还可以使用spring的@Bean的方式(javaConfig方式)
另:jndi介绍可参考博文()[]http://javacrazyer.iteye.com/blog/759485]
相关文章推荐
- Spring中数据源和数据库连接池配置的几种方法
- Spring中数据源和数据库连接池配置的几种方法
- Spring中数据源和数据库连接池配置的几种方法
- Spring中数据源和数据库连接池配置的几种方法
- Spring中数据源和数据库连接池配置的几种方法
- spring中配置数据源的几种方法
- Spring中数据源和数据库连接池配置的几种方法
- Spring几种数据源的配置方法
- Spring中数据源和数据库连接池配置的几种方法
- Spring中数据源和数据库连接池配置的几种方法
- spring的几种数据源配置
- spring配置数据源的几种方式
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- 读取spring配置文件的几种方法
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
- spring配置数据源的几种方式
- Spring加载配置文件的几种方法
- 读取Spring的配置文件applicationContext.xml几种方法
- spring配置hibernate的sessionFactory的几种方法GOOD
- Spring的几种配置方法