`

spring学习之配置数据源的几种方式

 
阅读更多
在Spring3中,配置DataSource的方法有五种。

第一种:beans.xml

   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
        destroy-method="close">  
        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />  
        <property name="url"  
            value="jdbc:sqlserver://localhost:1433;DatabaseName=spring" />  
        <property name="username" value="sa" />  
        <property name="password" value="********" />  
    </bean>  


第二种:beans.xml
    
<bean id="mappings"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">   
         <property name="locations" value="classpath:jdbc.properties"></property>   
         </bean>   
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
            destroy-method="close">  
            <property name="driverClassName" value="${jdbc.driverClassName}" />  
            <property name="url" value="${jdbc.url}" />  
            <property name="username" value="${jdbc.username}" />  
            <property name="password" value="${jdbc.password}" />  
        </bean>  

    在src文件夹里新建一个jdbc.properties文件,里面的内容为如下:
Xml代码  收藏代码

  
 jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver  
    jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring  
    jdbc.username=sa  
    jdbc.password=****



第三种:beans.xml
<bean id="mappings"   
         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">   
         <property name="locations" value="classpath:jdbc.properties"></property>   
         </bean>   
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
            destroy-method="close">  
            <property name="driverClassName" value="${jdbc.driverClassName}" />  
            <property name="url" value="${jdbc.url}" />  
            <property name="username" value="${jdbc.username}" />  
            <property name="password" value="${jdbc.password}" />  
        </bean>  
      
        <context:property-placeholder location="classpath:jdbc.properties" />


在src文件夹里新建一个jdbc.properties文件,里面的内容为如下: 
  
 jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver  
    jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring  
    jdbc.username=sa  
    jdbc.password=********  


其中第二种与第三种类似,只是指定配置文件的方法不一样。

第四种:beans.xml
<bean id="mappings"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
      
     <!-- typed as a java.util.Properties -->  
     <property name="properties">  
        <value>  
        jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver  
        jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring  
        jdbc.username=sa  
        jdbc.password=********  
        </value>  
     </property>  
    </bean>  
      
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
            destroy-method="close">  
            <property name="driverClassName" value="${jdbc.driverClassName}" />  
            <property name="url" value="${jdbc.url}" />  
            <property name="username" value="${jdbc.username}" />  
            <property name="password" value="${jdbc.password}" />  
        </bean>  


第五种:Xml代码

 
beans.xml  
    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"  
          destroy-method="close"  
          p:driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"  
          p:url="jdbc:sqlserver://localhost:1433;DatabaseName=spring"  
          p:username="sa"  
          p:password="********"/>  


再加上命名空间:
Xml代码
    xmlns:p="http://www.springframework.org/schema/p" 

性能参数要根据实际情况测试得来的数据确定如何配置。

转自:http://www.cppblog.com/fenglin/articles/130494.html

第六种,最近发在网上看到

pring3中提供了一种简便的方式就是context:property-placeholder/元素
只需要在spring的配置文件里添加一句
<context:property-placeholder location="classpath:jdbc.properties"/>  


即可,这里location值为参数配置文件的位置,参数配置文件通常放在src目录下,而参数配置文件的格式跟java通用的参数配置文件相同,即键值对的形式,例如:
#jdbc配置
   test.jdbc.driverClassName=com.mysql.jdbc.Driver  
    test.jdbc.url=jdbc:mysql://localhost:3306/test  
    test.jdbc.username=root  
    test.jdbc.password=root 


应用:
1.这样一来就可以为spring配置的bean的属性设置值了,比如spring有一个jdbc数据源的类DriverManagerDataSource
在配置文件里这么定义bean:

  <bean id="testDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
        <property name="driverClassName" value="${test.jdbc.driverClassName}"/>  
        <property name="url" value="${test.jdbc.url}"/>  
        <property name="username" value="${test.jdbc.username}"/>  
        <property name="password" value="${test.jdbc.password}"/>  
    </bean>  


2.甚至可以将${ }这种形式的变量用在spring提供的注解当中,为注解的属性提供值
外在化应用参数的配置

在开发企业应用期间,或者在将企业应用部署到生产环境时,应用依赖的很多参数信息往往需要调整,比如LDAP连接、RDBMS JDBC连接信息。对这类信息进行外在化管理显得格外重要。PropertyPlaceholderConfigurer和PropertyOverrideConfigurer对象,它们正是担负着外在化配置应用参数的重任。

  <context:property-placeholder/>元素
PropertyPlaceholderConfigurer实现了BeanFactoryPostProcessor接口,它能够对<bean/>中的属性值进行外在化管理。开发者可以提供单独的属性文件来管理相关属性。比如,存在如下属性文件,摘自userinfo.properties。

Properties代码

    db.username=scott 
    db.password=tiger 

如下内容摘自propertyplaceholderconfigurer.xml。正常情况下,在userInfo的定义中不会出现${db.username}、${db.password}等类似信息,这里采用PropertyPlaceholderConfigurer管理username和password属性的取值。DI容器实例化userInfo前,PropertyPlaceholderConfigurer会修改userInfo的元数据信息(<bean/>定义),它会用userinfo.properties中db.username对应的scott值替换${db.username}、db.password对应的tiger值替换${db.password}。最终,DI容器在实例化userInfo时,UserInfo便会得到新的属性值,而不是${db.username}、${db.password}等类似信息。

 <bean id="propertyPlaceholderConfigurer"     
            class="org.springframework.beans.factory.config.    
    PropertyPlaceholderConfigurer">    
        <property name="locations">    
            <list>    
                <value>userinfo.properties</value>    
            </list>    
        </property>    
    </bean>    
       
    <bean name="userInfo" class="test.UserInfo">    
      <property name="username" value="${db.username}"/>    
      <property name="password" value="${db.password}"/>    
    </bean>  


通过运行并分析PropertyPlaceholderConfigurerDemo示例应用,开发者能够深入理解PropertyPlaceholderConfigurer。为简化PropertyPlaceholderConfigurer的使用,Spring提供了<context:property-placeholder/>元素。下面给出了配置示例,启用它后,开发者便不用配置PropertyPlaceholderConfigurer对象了。

<context:property-placeholder location="userinfo.properties"/>
PropertyPlaceholderConfigurer内置的功能非常丰富,如果它未找到${xxx}中定义的xxx键,它还会去JVM系统属性(System.getProperty())和环境变量(System.getenv())中寻找。通过启用systemPropertiesMode和searchSystemEnvironment属性,开发者能够控制这一行为。
分享到:
评论

相关推荐

    Spring配置多个数据源

    在开发企业级应用程序时,有时我们需要连接到不止一个数据库,比如主从数据库分离、读写分离、多租户系统等场景...记住,正确管理和配置数据源对于系统的稳定性和性能至关重要,因此在实际操作时一定要仔细检查和测试。

    spring 整合 mybatis 中数据源的几种配置方式(总结篇)

    Spring 整合 MyBatis 中数据源的几种配置方式总结 Spring 整合 MyBatis 是当前 Java 企业级应用程序中非常常见的一种技术架构。然而,在 Spring 整合 MyBatis 的过程中,有多种方式可以实现数据源的配置。今天,...

    Spring配置的5种方式

    ### Spring配置的5种方式详解 #### 一、引言 在Java开发领域,特别是针对企业级应用,Spring框架作为一款轻量级的容器管理工具,不仅提供了强大的依赖注入功能,还支持多种事务管理策略。Struts2+Spring+Hibernate...

    Spring中配置数据源的几种方式

    Spring中配置数据源的几种方式 在 Spring 框架中,配置数据源是非常重要的一步,因为它直接关系到应用程序的数据访问能力。今天,我们将讨论 Spring 中配置数据源的几种方式,并对每种方式进行详细的分析和比较。 ...

    Spring Boot多数据源(JdbcTemplate)配置与使用

    2. 配置数据源:在`application.properties`或`application.yml`中为每个数据源定义配置。例如,有两个数据源`primary`和`secondary`,配置如下: ```properties # 主数据源配置 spring.datasource.primary.url=...

    Spring配置数据源总结

    下面将详细讲解Spring配置数据源的相关知识点。 首先,我们来了解一下什么是数据源(DataSource)。数据源是Java中用于管理数据库连接的接口,它能够有效地管理和释放数据库连接,提高系统的性能和资源利用率。...

    通过Spring Boot配置动态数据源访问多个数据库的实现代码

    Spring Boot配置动态数据源访问多个数据库实现代码详解 通过Spring Boot配置动态数据源访问多个数据库可以实现数据库的动态增删和数量无限的支持,下面将详细介绍该实现代码的知识点。 数据源配置管理 在Spring ...

    基于注解和Spring的多数据源配置和使用

    3. **使用`@Configuration`和`@Bean`注解**:在Spring配置类中,使用`@Configuration`注解标记该类为配置类,然后使用`@Bean`注解声明数据源对象。例如: ```java @Configuration public class DataSourceConfig ...

    spring几种Dao支持配置

    以下将详细阐述Spring对DAO支持的几种配置方式: 1. **JDBC DAO支持:** Spring通过`JdbcTemplate`和`SimpleJdbcInsert`等类提供了对JDBC的抽象,减少了直接使用JDBC代码的繁琐性。`JdbcTemplate`提供了一组模板...

    spring配置文件加密实现

    总结来说,Spring配置文件加密实现涉及到以下几个关键步骤: 1. 选择并实现加密算法(如AES)。 2. 使用TE网络技术创建透明加密的文件系统。 3. 自定义或调整Spring的启动流程,使其能够通过加密层读取配置文件。 4...

    mybatis+spring实现动态切换数据源

    在企业级应用开发中,动态数据源是一种常见需求,它允许程序在运行时根据不同的业务逻辑切换到不同的数据库。在本项目中,我们将探讨如何利用MyBatis与Spring框架实现动态切换数据源的功能。首先,我们需要理解...

    springboot连接池、动态配置多数据源连接池,特别适合大数据部门、数据中台服务的多数据源连接池.zip

    Spring Boot默认支持几种流行的数据库连接池,如HikariCP、Druid、Tomcat JDBC等。这些连接池都提供了高效的连接管理和资源优化。HikariCP以其高性能和低内存占用被广泛采用,而Druid则以其丰富的监控功能受到青睐。...

    springboot +mybatis+oracle 配置多个数据源,配置两个数据库信息

    本配置示例将详细介绍如何在Spring Boot中整合MyBatis与Oracle数据库,并配置两个不同的数据源。 首先,我们需要理解数据源(DataSource)的概念。数据源是Java应用程序与数据库之间的桥梁,它负责管理数据库连接,...

    定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)

    Quartz是一个强大的、开源的作业调度库,能够精确地触发几千个并发的作业。 1. **引入依赖**: 在你的`pom.xml`或`build.gradle`文件中添加Quartz和Spring Quartz的依赖。 2. **配置Quartz**: 创建一个`quartz....

    spring中的数据源配置信息加密方案

    为了解决这个问题,我们可以采用以下几种策略: 1. **属性文件加密**:可以使用Java的Jasypt库对`application.properties`或`application.yml`中的敏感信息进行加密。Jasypt提供了`PBEWithMD5AndTripleDES`等加密...

    spring-boot2.0多数据源

    Spring Boot 2.0 多数据源是在开发大型分布式系统时常常遇到的一种需求,它允许应用程序连接并操作多个数据库,从而实现数据隔离、负载均衡或数据冗余等目标。Spring Boot,作为Java生态中的微服务开发框架,提供了...

    Springboot 动态多数据源 jta分布式事务

    1. Atomikos:这是一个开源的JTA实现,提供了一种在Spring Boot中实现分布式事务的方式。 2. Bitronix:另一种JTA实现,也可以与Spring Boot集成,处理分布式事务。 要启用JTA事务管理,你需要: 1. 添加Atomikos...

    JDBC数据源连接池的配置和使用示例

    2. 配置数据源:在`src/main/resources`下创建`application.properties`文件,添加如下配置: ```properties spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.driver-class-name=...

    Spring Boot + Druid + Mybatis + Atomikos 配置多数据源 并支持分布式事务

    2. 配置数据源:为每个数据源创建一个DataSource bean,使用Druid的配置类和属性配置不同的数据库连接。 3. 配置事务管理器:使用Atomikos的UserTransactionManager和JtaTransactionManager,注册到Spring Boot的...

    spring boot 实现多数据源源码

    在Spring Boot应用中,多数据源的实现是一个常见的需求,特别是在大型系统中,可能...在`dynamic-datasource`这个压缩包文件中,可能包含了以上几种方式的示例代码或配置文件,可以帮助开发者理解和实现多数据源功能。

Global site tag (gtag.js) - Google Analytics