applicationContext.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>name.properties</value>
</property>
</bean>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>birthday.properties</value>
</property>
</bean>
</beans>
birthday.properties属性文件
birthday=2012-12-12
name.properties属性文件
name=kid
SpringPropertyResourceReader.java
package utils;
import java.lang.reflect.Method;
import java.util.Properties;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.PropertyResourceConfigurer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.support.PropertiesLoaderSupport;
public class SpringPropertyResourceReader {
private static ApplicationContext applicationContext=new
ClassPathXmlApplicationContext("applicationContext.xml");
private static AbstractApplicationContext abstractContext =
(AbstractApplicationContext) applicationContext;
private static Properties properties=new Properties();
static{
try{
// get the names of BeanFactoryPostProcessor
String[] postProcessorNames = abstractContext
.getBeanNamesForType(BeanFactoryPostProcessor.class,true,true);
for (String ppName : postProcessorNames) {
// get the specified BeanFactoryPostProcessor
BeanFactoryPostProcessor beanProcessor=
abstractContext.getBean(ppName, BeanFactoryPostProcessor.class);
// check whether the beanFactoryPostProcessor is
// instance of the PropertyResourceConfigurer
// if it is yes then do the process otherwise continue
if(beanProcessor instanceof PropertyResourceConfigurer){
PropertyResourceConfigurer propertyResourceConfigurer=
(PropertyResourceConfigurer) beanProcessor;
// get the method mergeProperties
// in class PropertiesLoaderSupport
Method mergeProperties=PropertiesLoaderSupport.class.
getDeclaredMethod("mergeProperties");
// get the props
mergeProperties.setAccessible(true);
Properties props=(Properties) mergeProperties.
invoke(propertyResourceConfigurer);
// get the method convertProperties
// in class PropertyResourceConfigurer
Method convertProperties=PropertyResourceConfigurer.class.
getDeclaredMethod("convertProperties", Properties.class);
// convert properties
convertProperties.setAccessible(true);
convertProperties.invoke(propertyResourceConfigurer, props);
properties.putAll(props);
}
}
}catch(Exception e){
throw new RuntimeException(e);
}
}
public static String getProperty(String propertyName){
return properties.getProperty(propertyName);
}
}
测试代码Main.java
package main;
import utils.SpringPropertyResourceReader;
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(SpringPropertyResourceReader.getProperty("name"));
System.out.println(SpringPropertyResourceReader.getProperty("birthday"));
}
}
分享到:
相关推荐
Spring 中 PropertyPlaceholderConfigurer 的使用 PropertyPlaceholderConfigurer 是 Spring 框架中的一个重要组件,用于加载和管理 Properties 文件。它能够将 Properties 文件中的键值对注入到 Spring 的 bean 中...
在Spring框架中,属性占位符`PropertyPlaceholderConfigurer`是一个重要的工具,用于处理配置文件中的属性值引用。它使得我们可以在XML配置文件中使用占位符`${...}`来引用外部属性文件中的值,从而使应用配置更加...
在Spring中,`PropertyPlaceholderConfigurer`是一个非常重要的类,它用于处理属性文件中的占位符,将它们替换为实际的值。这在配置管理中起到了关键作用,特别是在大型分布式系统中,动态配置管理变得尤为重要。...
在Spring框架中,属性文件是配置关键信息的常用...通过这种方式,你可以在Spring中安全地使用外部属性文件,同时满足系统的安全需求。这种做法不仅可以提高应用的可维护性和部署效率,还能保护敏感信息,降低安全风险。
深入阅读这两份文档,可以帮助你更全面地理解和掌握Spring中属性管理的技巧。 总之,`org.springframework.beans.factory.config.PropertyPlaceholderConfigurer`是Spring框架中一个核心的配置组件,它简化了应用...
Spring框架中,PropertyPlaceholderConfigurer是一个非常重要的组件,它可以帮助我们读取配置文件,实现系统的配置信息统一管理。在大型项目中,我们往往会将配置信息配置在一个cfg.properties文件中,然后在系统...
下面将详细介绍如何在Spring中使用属性文件以及相关知识点。 1. **属性文件格式** 属性文件通常以`.properties`为扩展名,例如`application.properties`或`database.properties`。文件中的键值对以等号`=`分隔,如...
Spring 提供了多种方式来管理应用程序中的对象,从而简化了开发过程中的配置工作,并增强了代码的可测试性和可维护性。 #### 二、Spring框架的使用场景 - **企业级应用开发**:Spring 为复杂的业务逻辑提供了简单...
5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 ...
#### Spring中的PropertyPlaceholderConfigurer类 在Spring框架中,`PropertyPlaceholderConfigurer`是一种特殊的Bean,它被用来处理Spring配置文件中的占位符(placeholder),并将它们替换为具体的值。这些值通常...
以下是如何在Spring中从这个文件中读取这些参数的步骤: 1. **创建属性文件**: 首先,我们需要创建一个名为`jdbc.properties`的文件,通常放在项目的`src/main/resources`目录下,以便在运行时被自动加载。该文件...
在 Spring 框架中,引用外部属性文件是一种常见的配置方式,这种方式可以将配置信息抽取到一个独立的文件中,使得配置更加灵活和简洁。今天,我们将讨论如何在 Spring 中引用外部属性文件的方法。 为什么需要引用...
本文将详细介绍如何在Spring中读取和使用这些属性文件。 首先,属性文件通常位于项目的资源目录下,例如`/WEB-INF/configInfo.properties`。这个文件包含了一系列键值对,如邮件发送的相关配置: ```properties # ...
在Spring中,我们通常会在XML配置文件中定义Bean及其属性。然而,为了更好地管理和组织配置,我们可以采用多种方法来扩展配置。例如,可以将数据库连接信息写入属性文件,如`database.properties`,然后在Spring配置...
`PropertyPlaceholderConfigurer`是Spring早期版本中处理属性文件的工具,而`@PropertySource`则是从Spring 3.1引入的新特性,它们都可以用来从外部属性文件中读取值并注入到bean中。 1. `...
在Spring框架中,VM选项通常指的是在应用启动时传递给Java虚拟机的一系列系统属性,它们可以影响Spring应用的行为或配置。这些选项可能包括日志级别、类路径设置、服务器端口等。 首先,我们需要理解Spring的配置...
在Spring中,我们可以通过以下两种方式来读取并注入这些属性值: 1. **使用`@Value`注解**: `@Value`注解可以直接将属性值注入到字段或方法参数中。例如,如果我们要注入`database.url`,可以在类中声明一个字段...
当切换到C3P0时,首先引入了`PropertyPlaceholderConfigurer`来加载`jdbc.properties`文件,这样可以将敏感信息(如用户名、密码和连接池配置)存储在外部文件中,而不是硬编码在XML配置中。然后,配置了`...
Spring Environment 抽象是Spring框架中的一个重要组成部分,它为应用程序提供了环境相关的配置信息,包括属性值的占位符处理、类型转换以及条件化的Bean装配管理。这一抽象在Spring 3.1版本中引入,旨在统一处理...
`PropertyPlaceholderConfigurer`是一个常用的容器后处理器,它的主要作用是从外部的属性文件中读取配置信息,并将这些配置信息插入到BeanFactory的定义中。这使得可以在不修改主配置文件的情况下更改某些配置值,如...