【Spring】配置数据库资源

来源:互联网 发布:2konline巅峰科比数据 编辑:程序博客网 时间:2024/06/06 16:30


(1) Spring中配置数据源bean的方式

1、通过JDBC驱动程序定义的数据源
2、 通过JNDI查找的数据源
3、 连接池的数据源

(2) 使用JNDI数据源

好处:数据源完全可以在应用程序之外进行管理。
使用<jee:jndi-lookup>元素将其装配到Spring中:

<jee:jndi-lookup  id =”dataSource”  jndi-name=”/jdbc/SpitterDS”  resource-ref=”true”/>

说明:
jndi-name:指定JNDI中资源的名称
resource-ref:如果应用程序运行在Java应用服务器中,需要属性设置为true,这样给定的jndi-name将会自动添加“java:comp/env/”前缀(该前缀表示为JavaEE环境必须的)

通过Java配置,借助JndiObjectFactoryBean从JNDI中查找DataSource:
@Bean
public JndiObjectFactoryBean  dataSource(){
JndiObjectFactoryBean  jndiObjectFB = new  JndiObjectFactoryBean();
jndiObjectFB.setJndiName(“jdbc/SpittrDs”);
jndiObjectFB.setProxyInterface(javax.sql.DataSource.class);
return  jndiObjectFB;
}


(3) 使用数据源连接池

1、配置DBCPBasicDataSource的方式:
<bean  id=”dataSource”  class=”org.apache.commons.dbcp.BasicDataSource
  p:driverClassName=”org.h2.Driver”
  p:url = “jdbc:h2:tcp://localhost/~/spitter”
  p:username=”sa”
  p:password=””
  p:initialSize=”5”
  p:maxActive=”10”
” />
说明:
driverClassName:指定了JDBC驱动类的全限定类名
url:设置数据库的JDBC的URL

其他配置信息:


 

(4) 基于JDBC驱动的数据源

Spring中,通过JDBC驱动定义数据源是最简单的配置方式,提供了三个数据源类:
DriverManagerDataSource:在每个连接请求中都会返回一个新的连接,没有池化管理。
SimpleDriverDataSource:直接使用JDBC驱动,来解决在特定环境下的类加载问题,环境包括OSGi容器。
SingleConnectionDataSource:在每个连接请求时都会返回同一个的连接,视为只有一个连接的池。

注意:综上所述,应该使用数据源连接池。


(5) 使用嵌入式的数据源(embedded  database)

作为应用的一部分运行,而不是应用连接的独立数据库服务器。对于开发和测试,嵌入式数据库是很好的可选方案,每次重启应用或运行测试的时候,都能够重新填充测试数据。
  <jdbc:embedded-database id="dataSource" type="H2">
    <jdbc:script location="classpath:spittr/db/jdbc/schema.sql" />
    <jdbc:script location="classpath:spittr/db/jdbc/test-data.sql" />
  </jdbc:embedded-database>
说明:
type:表明嵌入式数据库应该是H2数据库(确保H2位于应用的类路径下)
<jdbc:script>:第一个引用了schema.sql包含了数据库中创建表的SQL,第二个引用了test-data.sql,用来将测试数据填充到数据库中
<jdbc:embedded-database>元素:暴露一个数据源,可以像使用其他的数据源来使用它。

(6) 使用profile选择数据源

需求:在某种环境下使用其中一种数据源,在另外的环境中使用不同的数据源。

在项目开发测试生产需配置不同dataSourse时,可以采用spring的profile定义多个数据源
1.在Spring配置文件中定义开发、测试环境和生产环境
<beans profile="test,develop">
    <!-- 开发和测试环境 -->
</beans>
 
<beans profile="product">
    <!-- 生产环境 -->
</beans>

2.在web.xml中, 指定使用哪种环境
<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>test</param-value>
</context-param>
或者
<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>product</param-value>
    </init-param>
</servlet>
或者
-Dspring.profiles.active="profile1,profile2"


原创粉丝点击