`
aijuans
  • 浏览: 1578832 次
社区版块
存档分类
最新评论

我的spring学习笔记13-容器扩展点之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/beans http://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>


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

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


PropertyPlaceholderConfigurer会读取location所设定的属性文件,并将properties文件中的值,设定给${name},${age},${birth}从而完成依赖注入。
相应的properties文件的定义如下:
name=xiaohailin
age=27
birth=19820123
这里用到的student bean,的class的代码如下:
比较简单,主要是一个get,set方法

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());  
    }
}

 

更多详细信息请查看  Spring 教程 http://www.itchm.com/forum-59-1.html

分享到:
评论

相关推荐

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

    本文将基于“spring-framework原始阅读笔记”展开,深入探讨Spring的核心组件,包括容器实现、属性名解析、AOP(面向切面编程)以及SpringMVC的细节。 首先,让我们从Spring的核心——容器开始。Spring容器是整个...

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

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

    stm32+esp8266+mqtt/onenet智能家居

    stm32+esp8266+mqtt/onenet智能家居

    Android开发不用存储权限进行拍照demo源码

    Android开发不用存储权限进行拍照,得到拍照后的图片效果。有一点难度,关键是存储路径的定义。

    weathered_copper_bulb_lit.png

    j

    ComfyUI使用反向 LoRA 进行优化

    反向Lora提高画面细节。

    NM-XMS-108小秘书(凤凰电话管理系统)【纽曼声卡版小秘书】

    小秘书(凤凰电话管理系统)【纽曼声卡版小秘书】,主要用来做为来电自动录音功能。

    基于SpringBoot的疫情居家检测管理系统(源码+数据库+数据库表结构文档)514

    基于SpringBoot的疫情居家检测管理系统,系统包含三种角色:管理员、用户、医生,主要功能如下。 【用户功能】 1. 首页:获取系统信息。 2. 论坛:参与居民讨论和分享信息。 3. 公告:查看社区发布的各类公告。 4. 医保信息:了解医疗保障相关信息。 5. 个人中心:管理个人信息,查看预约和就诊历史。 【管理员功能】 1. 首页:查看系统整体。 2. 个人中心:管理管理员的个人信息。 3. 管理员管理:维护系统管理员的账户信息。 4. 医生管理:添加、编辑和删除医生信息。 5. 用户管理:查看和管理系统用户的信息。 6. 预约管理:审核和管理用户对医生的预约服务。 7. 就诊历史管理:查看和管理用户的就诊历史记录。 8. 健康信息管理:记录和查看用户的健康信息。 9. 药品管理:管理系统内的药品种类。 10. 药品入库管理:记录和管理药品的入库情况。 11. 药品使用管理:记录和管理药品的使用情况。 12. 医保信息管理:管理医保相关信息。 13. 论坛管理:审核和回复用户在论坛上的帖子。 14. 公告管理:发布、编辑和管理公告信息。 15. 基础数据管理:管理系统的基础数据。 16. 轮播图信息:管理系统首页的轮播图展示。 【医生功能】 1. 首页:查看医生个人信息。 2. 个人中心:管理医生的个人信息。 3. 预约管理:查看和管理用户对医生的预约服务。 4. 就诊历史管理:查看和管理用户的就诊历史记录。 5. 健康信息管理:记录和查看用户的健康信息。 6. 药品管理:管理系统内的药品种类。 7. 药品入库管理:记录和管理药品的入库情况。 8. 药品使用管理:记录和管理药品的使用情况。 9. 医保信息管理:管理医保相关信息。 10. 论坛管理:审核和回复用户在论坛上的帖子。 11. 公告管理:发布、编辑和管理公告信息。 12. 轮播图信息:管理系统首页的轮播

    基于python的Opencv项目实战.zip

    基于python的Opencv项目实战.zip

    鸿蒙开发画廊效果demo源码

    鸿蒙开发画廊效果功能,中间大,两边小的浏览效果,难度不小,进行了一定的封装。很好看的画廊效果

    win32汇编环境,网络编程入门之十九

    win32汇编环境,网络编程入门之十九

    Linux文件管理类命令详解.zip

    linux

    【HD-RK3576-PI】定制用户升级固件

    【HD-RK3576-PI】定制用户升级固件

    机器学习大规模L1正则化线性分类优化方法与软件性能对比分析:详解GLMNET算法及实验结果

    内容概要:本文是关于大规模L1正则化线性分类优化方法和软件比较的补充材料,由台湾大学计算机科学系的研究团队撰写。文章详细介绍了GLMNET算法的核心公式推导及其具体实现步骤,包括如何计算L¯j(0; X˜),以及如何维护关键变量以减少计算量。此外,文中对比了多种求解器(如CDN、IPM、TRON等)在不同数据集上的性能,涵盖达到特定停止准则所需时间、迭代次数及每次迭代的平均成本。研究结果显示,在大多数数据集上,CDN方法表现最优,但在极严格的条件下,IPM方法表现更好。对于L1和L2正则化的逻辑回归,文中指出L1正则化在某些数据类型上可能提供更好的准确性,但训练时间较长,因此推荐先尝试L2正则化用于分类任务,而L1正则化更适合特征选择。 适合人群:对机器学习算法尤其是正则化技术有一定了解的数据科学家和研究人员。 使用场景及目标:①需要进行大规模线性分类问题的优化;②比较不同优化方法和工具包在实际应用中的效果;③理解L1和L2正则化在逻辑回归中的区别及其适用情况。 其他说明:本文提供了详细的数学推导和实验结果分析,有助于深入理解各种优化方法的工作原理及其优劣。读者可以通过这些内容选择最适合自身需求的算法和工具包。

    西电A测或通院微控温度仿真控制系统的proteus文件

    西电A测或通院微控温度仿真控制系统的proteus文件

    华为ONT使能2.0工具

    华为ONT使能2.0工具

    basalt_top.png

    basalt_top

    无极调速数控车床主轴箱装配CAD图.rar

    无极调速数控车床主轴箱装配CAD图.rar

    乳液涂料生产流程图.rar

    乳液涂料生产流程图.rar

    Day08 【基于jieba分词在词潜入编码的文本多分类】

    训练集数据

Global site tag (gtag.js) - Google Analytics