1. PropertyPlaceholderConfigurery使用
注解方式:
<context:property-placeholder location="classpath*:disconf.properties"
ignore-unresolvable="true"
ignore-resource-not-found="true" order = "2" />
bean方式:
<bean id="disconfStaticConfigPropertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!--找不到文件时不报错-->
<property name="ignoreResourceNotFound" value="true"/>
<!--是否应该忽略不可解析的占位符-->
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<!--order越小,越先被执行-->
<property name="order" value="1"/>
<!--本地配置文件-->
<property name="location" value="classpath*:disconf.properties" />
<property name="propertiesArray">
<list>
<!--Properties对象引用-->
<ref bean="disconfPropertiesReader"/>
</list>
</property>
</bean>
2. PropertyPlaceholderConfigurery原理
PropertyPlaceholderConfigurery继承关系
PropertyResourceConfigurer实现了BeanFactoryPostProcessor接口,在Spring
读取了所有bean的配置元数据,但是还没有实例化的时候,完成
读取配置文件,替换占位符。
1.mergeProperties
1.1 从本地配置读取
1.2 合并传递进来的properties
2.convertProperties
2.1替换properties中value中的占位符
3.processProperties
3.1 替换spring BeanDefinition中ParentName,BeanClassName,
FactoryBeanName,
FactoryMethodName,
Scope,
PropertyValues,
ConstructorArgumentValues中的占位符
3.2 替换spring Aliases别名中的占位符
3.3 addEmbeddedValueResolver添加到嵌入式值解析器列表中
3. 动态读取PropertyPlaceholderConfigurery
public class PropertyTest implements EmbeddedValueResolverAware {
private String tempFilePath;
@Override
public void setEmbeddedValueResolver(StringValueResolver resolver) {
//默认解析${}中的参数,
// 可以在定义PropertyPlaceholderConfigurery时设置placeholderPrefix,placeholderSuffix自定义分隔符
tempFilePath = resolver.resolveStringValue("${temp.file.path}");
}
}
- 大小: 45.8 KB
- 大小: 110.2 KB
分享到:
相关推荐
"String StringBuffer和StringBuilder区别之源码解析" 在Java中,字符串是我们经常使用的数据类型,而String、StringBuffer和StringBuilder是Java中三种常用的字符串类。在这篇文章中,我们将从源码角度对String、...
java jdk中string类的源码 ,了解string类的书写,定义和声明
c++string函数源码 无修改
### Spring源码解析知识点 #### 一、Spring IoC 容器详解 ##### 1. BeanFactory —— 最基础的IoC容器 - **概念**:`BeanFactory` 是Spring框架中最基本的IoC容器,它负责管理Bean的生命周期,包括创建、配置和...
basic_string源码详解 basic_string是C++标准库中一个非常重要的类,它提供了字符串处理的功能。在本文中,我们将深入探讨basic_string的源码,了解它的实现机制和内部数据结构。 basic_string的内部数据结构 ...
**Android AsyncTask 源码解析** AsyncTask 是 Android 平台上一个非常重要的工具类,用于在后台线程执行耗时操作,然后在 UI 线程更新结果,从而避免了因长时间运行任务而导致的 ANR(Application Not Responding...
.NET 3.5 String.cs 源代码
本篇文章将深入解析`std::string`类的一些关键知识点,特别是根据标题描述提及的拷贝构造函数、深拷贝与浅拷贝、追加函数、赋值函数以及字符串比较和重载运算符。 1. **拷贝构造函数**: 拷贝构造函数是一种特殊的...
在Java编程语言中,`String`类是使用最频繁的类之一,它代表不可变的字符序列。本文将深入解析`String`类的一些常用方法,帮助开发者更好地理解和使用这个核心类。 1. **构造方法** - `String()`:创建一个空字符...
List集合转换成String,String转List,Map转String,String转Map等 集合与字符串相互转换,可以自己扩展源码,带有注释
用C++语言实现的一个功能强大的String类,该类包含对字符串的各种灵活操作,40多个强大的API(CharAt,Length,IndexOf,Replace,Add,Insert,Remove.....), 为学习数据结构的朋友提供了很好的帮助。
本篇文章将详细解析C#中如何进行这两种数据类型的转换,并讨论转换过程中需要注意的事项。 首先,我们来看最基础的转换方法: 1. **字符串(string)转为字节数组(byte[])**: 这个过程涉及到字符编码,C#中可以...
答:String 内部存储结构是char数组,源码如下: public final class String implements java.io.Serializable, Comparable, CharSequence { /** 该值用于字符存储. */ private final char value[]; 2.String源码中...
源码解析有助于深入理解其工作原理,提高在实际应用中的优化能力。本篇文章将聚焦Redis的源码,探讨其核心组件、数据结构以及内部运行机制。 1. **Redis的数据结构** Redis的核心数据结构包括字符串(String)、...
C++模拟string类作业源码.zip
### Android源码解析知识点概述 #### 公共技术点概览 - **Java反射** - Java反射机制允许运行时检查类、接口、字段和方法的信息,并能够动态地调用方法和修改字段值。 - **应用场景**:动态加载类、实现插件化...
vs2019 里 C++ 20规范的 string 类的源码注释
Java源码解析——看优秀源码最能使人进步 Java源码解析是一种深入了解JDK源码的方式,适合那些想深入了解JDK源码的人。通过对JDK源码的解析,可以让开发者更好地理解Java语言的底层逻辑,从而写出更加高效、稳定的...