`
mzhj
  • 浏览: 227163 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring 容器扩展点之PropertyPlaceholderConfigurer

阅读更多

spring 容器扩展点之PropertyPlaceholderConfigurer

PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。关于BeanFactoryPostProcessor和BeanPostProcessor类似。

PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java Properties文件中去。这样的话,只需要对properties文件进行修改,而不用对xml配置文件进行修改。

下面将通过一个例子来理解PropertyPlaceholderConfigurer。

首先是配置文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation=" http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">

   <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="propertyPlaceHolder.properties"/>
</bean>

<bean id ="student" class="co.jp.beanFactoryPost.Student">
  <property name="name">
    <value>${name}</value>
  </property>
  <property name="age">
    <value>${age}</value>
   </property>
<property name="birth">
   <value>${birth}</value>
  </property>
</bean>
</beans>

在这个配置文件中最重要的就是下面这段代码,

 

PropertyPlaceholderConfigurer会读取location所设定的属性文件,并将properties文件中的值,设定给${name},${age},${birth}从而完成依赖注入。

相应的properties文件的定义如下:

name=xiaohailin
age=27
birth=19820123

这里用到的student bean,的class的代码如下:

package co.jp.beanFactoryPost;
public class Student {
private String name;
private String age;
private String birth;
public void setName(String name){
this.name = name;
}
public void setAge(String age){
this.age = age;
}
public void setBirth(String birth){
this.birth = birth;
}
public String getName(){
return this.name;
}
public String getAge(){
return this.age;
}
public String getBirth(){
return this.birth;
}
}

接着,写一个测试的主类,代码如下:

public class PropertyHolderPlaceDemo {
public static void main(String[] args) {
     ApplicationContext ctx = new ClassPathXmlApplicationContext("propertyPlaceHolder.xml");

     Student student = (Student) ctx.getBean("student");
     System.out.println(student.getAge());
     System.out.println(student.getBirth());
     System.out.println(student.getName());
   }
}

分享到:
评论

相关推荐

    4.Spring应用扩展.pptx

    Bean的作用域决定了每次请求或创建时,Spring容器会返回多少个独立的实例。默认情况下,Spring以`singleton`作用域创建Bean,意味着在整个容器生命周期内,只会有一个实例。如果需要每次请求或调用时都创建新的实例...

    spring

    - **BeanPostProcessors** 和 **BeanFactoryPostProcessors**:允许开发者在Spring容器启动过程中对Bean定义进行修改。 - **PropertyPlaceholderConfigurer** 和 **PropertyOverrideConfigurer**:用于在运行时动态...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.7. 容器扩展点 3.7.1. 用BeanPostProcessor定制bean 3.7.1.1. 使用BeanPostProcessor的Hello World示例 3.7.1.2. RequiredAnnotationBeanPostProcessor示例 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7....

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

    Spring默认的`PropertyPlaceholderConfigurer`不直接支持加密的属性文件,但它提供了扩展点,允许我们自定义实现来处理加密后的属性。以下是一种实现方式: 1. 创建一个自定义的`PropertyPlaceholderConfigurer`...

    spring 启动时加载不同的文件

    - **功能**: 它能够将`properties`文件中的键值对映射到Spring容器中,供其他Bean使用。 **2. 动态加载配置文件** - **目的**: 根据部署环境的不同,动态地更改应用使用的配置文件,从而实现环境间的灵活切换。 - *...

    spring-reference.pdf

    综上所述,Spring框架通过其强大的依赖注入机制和丰富的扩展点,为Java开发者提供了一个灵活、高效、可扩展的开发平台。无论是构建简单的Web应用还是复杂的企业级系统,Spring都能提供强有力的支持。

    spring-reference1.2.pdf

    根据提供的文档信息,我们可以深入探讨Spring框架的核心概念与特性,特别是版本1.2中的关键知识点。...Spring框架的强大之处在于它的灵活性和可扩展性,这些特点使得它成为构建Java应用程序的理想选择之一。

    spring.net中文手册在线版

    12.2.3.Spring.NET提供的切入点实现类 12.2.3.1.静态切入点 12.2.3.2.动态切入点 12.2.4.自定义切入点 12.3.Spring.NET的通知类型 12.3.1.通知的生命周期 12.3.2.通知类型 12.3.2.1.拦截环绕通知 12.3.2.2.前置通知 ...

    最新spring框架学习笔记(全)资料 (2).pdf

    IoC使得对象的创建和依赖关系的管理由Spring容器负责,而AOP则允许开发者分离关注点,如日志、事务管理等,使其独立于业务逻辑。 在实际应用中,首先需要将Spring的jar包导入项目中,然后创建一个名为`...

    spring-framework:spring-framework原始阅读笔记-spring源码阅读

    Spring容器是整个框架的基础,它负责管理对象的生命周期和依赖关系。主要分为两种类型的容器:BeanFactory和ApplicationContext。BeanFactory是基本的容器,提供对bean的配置和管理;而ApplicationContext则在...

    属性占位符配置器

    3. **使用占位符**:在其他Bean的配置中,通过`${...}`语法引用外部属性文件中的键值,Spring容器在启动时会自动进行替换。 #### 四、深入理解与最佳实践 为了更有效地利用**属性占位符配置器**,开发者应关注以下...

Global site tag (gtag.js) - Google Analytics