`

Spring属性占位符PropertyPlaceholderConfigurer的使用 .

 
阅读更多

来源:http://blog.csdn.net/sz_bdqn/article/details/6666262

 

Spring属性占位符PropertyPlaceholderConfigurer的使用

1、一个简单的Demo

1.1、创建conf.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="propertyConfigurer"  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <!-- 
        使用location属性定义单个配置文件
        <property name="location">
            <value>classpath:/com/zsw/config/jdbc.properties</value>
        </property>
         -->
  
  <!-- 使用locations属性定义多个配置文件 -->
  <property name="locations">
     <list>
        <value>classpath:/com/zsw/config/jdbc.properties</value>
     </list>
  </property> 
    </bean>
    <bean id="dataSource"  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="url">
            <value>${database.url}</value>
        </property>
        <property name="driverClassName">
            <value>${database.driver}</value>
        </property>
        <property name="username">
            <value>${database.user}</value>
        </property>
        <property name="password">
            <value>${database.password}</value>
        </property>
    </bean>
</beans>

1.2.创建jdbc.properties文件

database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/right?useUnicode=true&autoReconnect=true&characterEncoding=UTF-8
database.user=root
database.password=root
jdbc.pool.c3p0.acquire_increment=2
jdbc.pool.c3p0.max_size=20
jdbc.pool.c3p0.min_size=2
jdbc.pool.c3p0.preferred_test_query='SELECT 1'
jdbc.pool.c3p0.idle_connection_test_period=18000
jdbc.pool.c3p0.max_idle_time=25000

1.3.创建Config.java

package com.zsw.config;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class Config {
     public static void main(String[] args) {
         XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource("src/com/zsw/config/conf.xml"));
         // 如果要在BeanFactory中使用,bean factory post-processor必须手动运行:
         PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
         cfg.setLocation(new FileSystemResource("src/com/zsw/config/jdbc.properties"));
         cfg.postProcessBeanFactory(factory);
         DriverManagerDataSource dataSource = (DriverManagerDataSource) factory.getBean("dataSource");
//         System.out.println(dataSource.getDriverClassName());
         
         
         System.out.println(dataSource.getUsername());
         // 注意,ApplicationContext能够自动辨认和应用在其上部署的实现了BeanFactoryPostProcessor的bean。这就意味着,当使用ApplicationContext的时候应用PropertyPlaceholderConfigurer会非常的方便。由于这个原因,建议想要使用这个或者其他bean
         // factory postprocessor的用户使用ApplicationContext代替BeanFactroy。
         ApplicationContext context = new ClassPathXmlApplicationContext("com/zsw/config/conf.xml");
         DriverManagerDataSource dataSource2 = (DriverManagerDataSource) context.getBean("dataSource");
         System.out.println(dataSource2.getUsername());
     }
 
}

 

2.Spring中PropertyPlaceholderConfigurer多种配置方式

2.1配置单个Properties文件

<bean id="propertyConfigurerForAnalysis" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:/spring/include/dbQuery.properties</value>
    </property>
</bean>

其中classpath是引用src目录下的文件写法。

2.2 当存在多个Properties文件时,配置就需使用locations了:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">     <property name="locations">        <list>           <value>classpath:/spring/include/jdbc-parms.properties</value>           <value>classpath:/spring/include/base-config.properties</value>         </list>     </property> </bean>

 

2.3、接下来我们要使用多个PropertyPlaceholderConfigurer来分散配置,达到整合多工程下的多个分散的Properties 文件,其配置如下:

<bean id="propertyConfigurerForProject1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="order" value="1" />
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="location">
       <value>classpath:/spring/include/dbQuery.properties</value>
    </property>
</bean>

 

<bean id="propertyConfigurerForProject2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="order" value="2" />
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="locations">
      <list>
        <value>classpath:/spring/include/jdbc-parms.properties</value>
        <value>classpath:/spring/include/base-config.properties</value>
      </list>
    </property>
</bean>

 

其中order属性代表其加载顺序,而ignoreUnresolvablePlaceholders为是否忽略不可解析的 Placeholder,如配置了多个PropertyPlaceholderConfigurer,则需设置为true

 

分享到:
评论

相关推荐

    Spring属性占位符PropertyPlaceholderConfigurer的使用

    在Spring框架中,属性占位符`PropertyPlaceholderConfigurer`是一个重要的工具,用于处理配置文件中的属性值引用。它使得我们可以在XML配置文件中使用占位符`${...}`来引用外部属性文件中的值,从而使应用配置更加...

    org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

    这个类是Spring在初始化bean时用来解析和注入环境变量或系统属性的关键工具,使得开发者可以在配置文件中使用`${property}`形式的占位符,然后在运行时被实际值替换。 在Spring应用中,我们经常会在XML配置文件或者...

    .properties文件读取及占位符${...}替换源码解析

    例如,下面是一个使用 PropertyPlaceholderConfigurer 实现占位符${...}替换的示例代码: ``` &lt;bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt; ...

    属性占位符配置器

    在Spring框架中,**属性占位符配置器**(Property Placeholder Configurator)是一种强大的配置工具,它允许开发者在配置文件中使用占位符来引用外部属性文件中的值,从而实现了配置的动态化和灵活性。这一特性在处理...

    Spring实战之属性占位符配置器用法示例

    本文将详细介绍Spring实战之属性占位符配置器用法示例,结合实例形式分析了spring属性占位符配置器的具体配置及使用技巧。 一、配置文件配置 在Spring框架中,配置文件是应用程序的核心部分。配置文件用于存储应用...

    Spring及Mybatis整合占位符解析失败问题解决

    然而,在使用Spring和Mybatis进行开发时,可能会遇到一些问题,例如占位符解析失败问题。本文将介绍如何解决这个问题,并详细解释解决方法的原理。 问题描述: 在使用Spring和Mybatis进行开发时,可能会遇到以下...

    关于spring系统中多系统的配置

    通过这种方式,我们可以轻松地在Spring配置文件中使用占位符语法`${property.name}`来引用`dbQuery.properties`中的属性。 ### 配置多个Properties文件 当需要引用多个属性文件时,可以使用`locations`属性代替`...

    SPRING:bean配置properties

    在Spring框架中,Bean的配置与管理是其核心功能之一,而通过`PropertyPlaceholderConfigurer`进行属性占位符的配置则是实现动态配置的关键技术。本文将深入解析如何利用`PropertyPlaceholderConfigurer`进行bean配置...

    Spring PropertyPlaceholderConfigurer配置文件加载器集成ZooKeeper来实现远程配置读取

    在Spring中,`PropertyPlaceholderConfigurer`是一个非常重要的类,它用于处理属性文件中的占位符,将它们替换为实际的值。这在配置管理中起到了关键作用,特别是在大型分布式系统中,动态配置管理变得尤为重要。...

    spring使用属性文件

    `PropertyPlaceholderConfigurer`是一个Bean定义后处理器,它会替换Bean定义中的占位符(如`${key}`)为属性文件中的值。而`@PropertySource`注解可以直接在类级别上声明,指示Spring从指定的属性文件中读取属性。 ...

    在Spring中使用加密外部属性文件

    这些信息通常存储在`.properties`文件中,并通过占位符`${}`引用到Spring配置文件中。然而,对于敏感信息,如密码、API密钥等,直接明文存储在属性文件中存在安全风险。为了保护这些数据,我们需要采取加密措施。 ...

    第十九章 Spring Environment 抽象(Environment Abstraction)1

    Spring Environment 抽象是Spring框架中的一个重要组成部分,它为应用程序提供了环境相关的配置信息,包括属性值的占位符处理、类型转换以及条件化的Bean装配管理。这一抽象在Spring 3.1版本中引入,旨在统一处理...

    spring-reference.pdf

    1. **PropertyPlaceholderConfigurer**:用于在配置文件中解析占位符,将占位符替换为实际值。 2. **PropertyOverrideConfigurer**:用于覆盖已存在的Bean定义属性,通常用于环境特定的配置。 3. **自定义...

    基于Spring2.0 Property Placeholder配置的源码例子

    Spring 2.0引入了`PropertyPlaceholderConfigurer`类,它是一个Bean工厂后处理器,负责在Bean定义中替换以`${...}`形式的占位符为实际的属性值。这些属性通常来自一个或多个`.properties`文件,可以是classpath下的...

    spring2.5 配置VM

    `PropertyPlaceholderConfigurer`允许我们在XML配置文件中使用 `${property}` 形式的占位符,这些占位符的值会在运行时被VM参数或系统属性替换。 例如,我们可以在XML配置中这样使用: ```xml ...

    spring mybatis 3.x 使用图文

    且Spring配置文件中设置了`default-autowire="byName"`,那么在解析加载bean定义阶段,如果`dataSource`中使用了占位符,可能会导致提前初始化部分类,此时`PropertyPlaceholderConfigurer`尚未替换定义中的变量,...

    Spring 3.0 整合 iBatis 3 Beta10 配置

    使用C3P0连接池配置,如示例所示,通过属性占位符 `${jdbc.*}` 来引用`.properties`文件中的值: ```xml &lt;!-- C3P0 数据源配置 --&gt; &lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"&gt;...

    说说在Spring中如何引用外部属性文件的方法

    在上面的配置中,我们使用 PropertyPlaceholderConfigurer 来引入外部属性文件 system.properties,然后在数据源 Bean 中使用占位符 ${} 来引用属性文件中的属性项。 PropertyPlaceholderConfigurer 属性说明 ...

    服务器扩展:添加服务器占位符

    Spring允许我们在配置文件中使用 `${...}` 来引用占位符,然后通过PropertyPlaceholderConfigurer 或者 @Value 注解来解析这些占位符,并在运行时替换为实际值。 例如,如果你有一个名为 `application.properties` ...

    spring配置文件

    `PropertyPlaceholderConfigurer`是Spring提供的一个实用工具类,它允许我们在配置文件中使用占位符 `${...}` 来引用外部属性文件中的值。在示例中,`location`属性指定了属性文件的位置,如`classpath:/spring/...

Global site tag (gtag.js) - Google Analytics