`
xo_tobacoo
  • 浏览: 390863 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

spring中数据库的配置

    博客分类:
  • j2ee
阅读更多

对于不同的数据库存取需求,我们使用JDBC来解决这个问题,对于不同的数据库连接来源需求,Spring则提供了DataSource注入,更换数据库 连接来源只要在Bean.xml中修改配置,而不用修改任何一行程序。 

        因应用不同的系统,应用程序可能使用不同的数库据连接来源,但如纯粹的使用JDBC、透过连接池、或是透过JNDI等等,数据库连接来源 的更改是底层的行为,不应影响到上层的业务逻辑,为此,您可以在需要取得连接来源的Bean上保留一个资料来源注入的接口,让依赖的资料来源由该接口注 入。例如我们来写一个简单的

Bean: 
代码: 
package onlyfun.caterpillar; 
                                                                                
import javax.sql.DataSource; 
import java.sql.Connection; 
                                                                                
public class DataBean { 
    private DataSource dataSource; 
                                                                                
    public void setDataSource(DataSource dataSource) { 
        this.dataSource = dataSource; 
    } 
                                                                                
    public void testDataSource() { 
        try { 
            Connection connection = dataSource.getConnection(); 
            if(connection != null) 
                System.out.println("test ok!"); 
        } 
        catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 



    这是一个简单的测试Spring DataSource注入的程式,我们通过javax.sql.DataSource接口来注入资料来 源,Spring提供了org.springframework.jdbc.datasource.DriverManagerDataSource来取 得DataSource,它实现了javax.sql.DataSource,您将之当作一个Bean,之后再注入DataBean中即 可,Bean.xml可以这么写: 
代码: 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
        <property name="driverClassName"> 
            <value>com.mysql.jdbc.Driver</value> 
        </property> 
        <property name="url"> 
            <value>jdbc:mysql://localhost:3306/TestDB</value> 
        </property> 
        <property name="username"> 
            <value>caterpillar</value> 
        </property> 
        <property name="password"> 
            <value>123456</value> 
        </property> 
    </bean> 
                                                                                
    <bean id="dataBean" class="onlyfun.caterpillar.DataBean"> 
        <property name="dataSource"> 
            <ref bean="dataSource"/> 
        </property> 
    </bean> 
</beans> 


    如果您之前只使用spring-core.jar这个类库,您还必须加入spring-dao.jar,
org.springframework.jdbc.datasource.DriverManagerDataSource是包括在这个类库中,如果您 使用的是spring.jar,当中已经包括了,无需加入任何的jar,当然,为了使用JDBC,您必须要有JDBC驱动程序的jar档。 

可以用下面这段程式简单的测试一下: 
代码: 
  BeanDefinitionRegistry reg = new DefaultListableBeanFactory(); 
  XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg); 
                                                                                
  reader.loadBeanDefinitions(new ClassPathResource("bean.xml"));; 
                                                                                
  BeanFactory bf = (BeanFactory) reg; 
  DataBean dataBean = (DataBean) bf.getBean("dataBean"); 
  dataBean.testDataSource(); 

   DriverManagerDataSource并没有提供连接池的功能,只能作简单的连接测试,现在假设连接测试没有问题了,您想要换上DBCP以获得连接池的功能,则原程序不用更动,只要改改Bean定义档就可以了: 
代码: 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
        <property name="driverClassName"> 
            <value>com.mysql.jdbc.Driver</value> 
        </property> 
        <property name="url"> 
            <value>jdbc:mysql://localhost:3306/TestDB</value> 
        </property> 
        <property name="username"> 
            <value>caterpillar</value> 
        </property> 
        <property name="password"> 
            <value>123456</value> 
        </property> 
    </bean> 
    <bean id="dataBean" class="onlyfun.caterpillar.DataBean"> 
        <property name="dataSource"> 
            <ref bean="dataSource"/> 
        </property> 
    </bean> 
</beans> 


    现在我们使用的是org.apache.commons.dbcp.BasicDataSource作为注入的DataSource源,为了使用 DBCP的功能,您必须要将commons-dbcp.jar加入CLASSPATH中,另外您还需要commons-pool.jar与 commons-collections.jar,这些都可以在Spring的相依版本中的lib目录下找到。 
    注意到我們在dataSource Bean上宣告了destroy-method,如此可以确保BeanFactory在关闭进也一并关闭BasicDataSource。 

    如果您的Servlet容器提供了JNDI资料源,您也可以简单的换上这个资料源: 
代码: 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
    <bean id="dataSource" class="org.springframework.indi.JndiObjectFactoryBean"> 
        <property name="jndiName"> 
            <value>jdbc/TestDB</value> 
        </property> 
    </bean> 
    <bean id="dataBean" class="onlyfun.caterpillar.DataBean"> 
        <property name="dataSource"> 
            <ref bean="dataSource"/> 
        </property> 
    </bean> 
</beans> 

   为了使用org.springframework.indi.JndiObjectFactoryBean,您必须加入spring- context.jar这个类库,jndiName实际上要根据您所设定的JNDI查询名称,您可以在下面这个网址找到有关于Tomcat中JNDI设定 的方式: 
http://www.caterpillar.onlyfun.net/phpBB2/viewtopic.php?t=1354

分享到:
评论

相关推荐

    spring配置数据库文件

    spring配置数据库文件,连接数据库的一写配置文件

    Spring数据库连接等配置加密

    本文将详细探讨"Spring数据库连接等配置加密"这一主题。 首先,我们来看`dbconfig.properties`文件,这是Spring项目中常见的用于存储数据库连接配置的文件。通常,这个文件会包含如下内容: ``` # 数据库连接配置 ...

    Springboot中使用数据库配置定时任务

    4. 从数据库加载定时任务配置并更新到Spring Boot的配置中。 5. 在业务逻辑类中使用`@Scheduled`注解来定义定时任务,并根据数据库配置动态调整执行频率。 通过这种方式,我们可以灵活地管理和调整应用中的定时任务...

    spring连接数据库代码

    本文将详细讲解如何使用 Spring 连接数据库,包括创建数据库、配置 Spring、编写数据库操作代码等步骤。 创建数据库 首先,我们需要创建一个数据库。这里,我们使用 MySQL 数据库管理系统和 SQLyog 工具来创建一个...

    spring多数据库

    此外,Spring Data JPA和MyBatis等持久层框架也支持多数据库配置。它们通常需要额外的配置来指定使用的`DataSource`,并通过`@Repository`或`@Mapper`注解的子类来区分不同数据库的操作。 最后,为了确保事务的一致...

    Spring框架数据库连接配置全指南

    本文将详细介绍如何在Spring框架中配置数据库连接,包括使用JDBC、JPA、Hibernate等技术,以及如何利用Spring Boot的自动配置功能简化配置过程。 在Spring框架中配置数据库连接是一个基础而重要的任务。通过本文的...

    spring连接数据库实例

    在Spring配置中启用事务管理器,并在需要事务的方法上添加`@Transactional`注解,Spring会自动进行事务的开始、提交或回滚。例如: ```xml &lt;bean id="transactionManager" class="org.springframework.jdbc....

    spring和数据库层的结合

    1. **数据源配置**:Spring可以配置数据源,并且可以在配置文件中定义Hibernate的相关信息,例如SessionFactory的配置等。这样,开发者无需在代码中直接管理这些配置信息,从而提高了代码的可维护性。 2. **模板...

    Spring boot连接oracle数据库JDBC配置步骤

    在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,需要在 `build.gradle` 文件中添加 Oracle JDBC ...

    初学SpringCloud连接Oracle数据库

    本篇文章将详细讲解如何在SpringCloud项目中配置Oracle数据库,并从数据库中获取数据。 首先,我们需要在项目中引入SpringBoot对Oracle数据库的支持。这可以通过在`pom.xml`文件中添加相应的依赖来实现。通常,你...

    spring mvc jdbc 连接数据库配置说明

    spring mvc jdbc 连接数据库配置说明

    spring 数据库动态切换

    1. **配置多个DataSource**:在Spring的配置文件(如XML或Java配置)中,为每个数据库定义一个DataSource。每个DataSource应包括数据库驱动类、URL、用户名和密码等信息。 2. **使用AbstractRoutingDataSource**:...

    Spring中连接各个数据库

    在Spring框架中,连接到不同的数据库是通过数据源(DataSource)和相关配置来实现的。在上述描述中,我们看到了如何在Spring的配置文件`applicationContext.xml`中配置连接到MySQL、Oracle和SQL Server的数据源。...

    Springcloud 多数库 多数据源整合,查询动态切换数据库

    这样,当需要更新数据库配置时,只需更改Config Server上的配置,服务端会自动感知变化并重新加载。 4. **Ribbon和Feign客户端**:在Spring Cloud中,Ribbon和Feign常用于服务间的负载均衡。如果各个服务连接不同的...

    spring-jdbc文件数据库配置加密

    对数据库配置文件进行加密存储方案,对数据库配置文件进行加密存储方案,对数据库配置文件进行加密存储方案,对数据库配置文件进行加密存储方案,对数据库配置文件进行加密存储方案

    定时器(quartz+spring)读取数据库配置

    在Spring的配置文件(如applicationContext.xml)中,定义一个`SchedulerFactoryBean`,设置数据库连接信息,并开启从数据库加载Job和Trigger的配置: ```xml &lt;bean id="schedulerFactoryBean" class="org.spring...

    Spring mysql数据库的配置与链接

    通过以上步骤,我们可以有效地在Spring应用中配置和使用MySQL数据库,并借助SimpleJdbcTemplate简化SQL操作。这种模式不仅提高了代码的可读性和可维护性,也降低了直接操作JDBC带来的复杂性。在实际项目中,还可以...

    boot-crmSpring数据库开发--SpringJDBC的配置

    本教程将详细讲解如何在Spring Boot项目中配置Spring JDBC,以便进行数据库开发。 首先,让我们了解Spring Boot的特点。Spring Boot简化了Spring应用的初始搭建以及开发过程,通过内嵌的Tomcat服务器和自动配置功能...

    springmvc+spring+mybatis增删改查直接部署修改数据库配置即可运行

    1. 配置数据库连接:在Spring的配置文件中,如`applicationContext.xml`,修改数据源的相关参数,包括数据库URL、用户名、密码等,以连接到你的本地或远程数据库。 2. 配置MyBatis:在`mybatis-config.xml`中,可能...

Global site tag (gtag.js) - Google Analytics