PropertyOverrideConfigurer,类似于PropertyPlaceholderConfigurer,但是与后者相比,前者对于bean属性可以有缺省值或者根本没有值。如果起覆盖作用的 Properties文件没有某个bean属性的内容,那么缺省的上下文定义将被使用。
注意:bean 工厂的定义并 不会意识到被覆盖,所以仅仅察看XML定义文件并不能立刻明显地知道覆盖配置是否被使用了。在有多个PorpertyOverrideConfigurer对用一个bean属性定义了不同的值的时候,最后一个将取胜(取决于覆盖的机制)。
Properties文件的一行配置应该是如下的格式:
beanName.property=value,其中beanName是需要覆盖的bean的名字,property是需要覆盖的属性名
实体:
package Bean.propertytwo;public class Chinese ...{ private String name; private String age; public String getAge() ...{ return age; } public void setAge(String age) ...{ this.age = age; } public String getName() ...{ return name; } public void setName(String name) ...{ this.name = name; } }
配置文件:年龄age有注入值30
<?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="propertyConfigure" class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
<property name="locations" value="classpath:Bean/propertytwo/person.properties">
</property>
</bean>
<bean id="chinese" class="Bean.propertytwo.Chinese">
<property name="age" value="30"></property>
<property name="name" value="gaoxiang"></property>
</bean>
</beans>
属性文件,将age设置为26:
chinese.age=26
测试代码:
public static void main(String[] args) throws Exception ...{
String path=new Test().getClass().getResource("/").getPath();
String realpath=path.substring(1, path.length());
ApplicationContext context=new FileSystemXmlApplicationContext(realpath+"/propertytwo.xml");
Chinese p=(Chinese)context.getBean("chinese");
System.out.println(p.getName()+p.getAge());
}
运行结果:
gaoxiang26
可以看到,age已经被properties中的数值覆盖了,没有使用配置文件中的数值
分享到:
相关推荐
它使得我们可以在XML配置文件中使用占位符`${...}`来引用外部属性文件中的值,从而使应用配置更加灵活和可维护。下面我们将详细探讨`PropertyPlaceholderConfigurer`的工作原理、使用方法以及其在实际开发中的应用。...
此外,还有一些其他的解决方法,例如使用Spring的国际化文案占位符 annotation来指定占位符的类型和名称,或者使用自定义的国际化文案占位符机制来替换占位符。 解决Spring国际化文案占位符失效问题需要了解Spring...
标题“maven 占位符打包”指的是在Maven的POM.xml文件中使用特定的占位符,以便在不同环境中替换为相应的配置值。这样可以实现代码的复用和环境的隔离,提高开发效率并降低出错的可能性。 描述中的“工程运行环境有...
在Spring框架中,**属性占位符配置器**(Property Placeholder Configurator)是一种强大的配置工具,它允许开发者在配置文件中使用占位符来引用外部属性文件中的值,从而实现了配置的动态化和灵活性。这一特性在处理...
Spring JDBC 占位符配置器 这个实现使用 JDBC 数据源和 SQL 语句解析占位符。 大部分测试代码取自。 特拉维斯 CI : 使用示例 构建并安装到本地 Maven 存储库中 ./gradlew publishToMavenLocal 在您的项目中包含...
.properties文件读取及占位符${...}替换是Java开发中常用的技术,通过使用.properties文件来存储配置信息,并使用占位符${...}来替换这些配置信息。下面将详细介绍.properties文件读取及占位符${...}替换的原理和...
然而,在使用Spring和Mybatis进行开发时,可能会遇到一些问题,例如占位符解析失败问题。本文将介绍如何解决这个问题,并详细解释解决方法的原理。 问题描述: 在使用Spring和Mybatis进行开发时,可能会遇到以下...
综上所述,`@RequestMapping`的通配符和占位符功能使得我们在Spring MVC中能构建出更加灵活且适应性强的路由规则,从而更好地控制HTTP请求的处理流程。在实际开发中,合理使用这些特性可以提高代码的可维护性和扩展...
本文将详细介绍Spring实战之属性占位符配置器用法示例,结合实例形式分析了spring属性占位符配置器的具体配置及使用技巧。 一、配置文件配置 在Spring框架中,配置文件是应用程序的核心部分。配置文件用于存储应用...
在Spring框架中,属性覆盖占位符配置器(PropertyOverrideConfigurer)是一个非常实用的工具,它允许我们在不修改Spring配置文件的情况下,通过外部属性文件来动态地覆盖Bean的属性值。这种方式增强了应用的灵活性...
本文将深入探讨Spring Boot的环境属性占位符解析以及类型转换的过程,帮助你更好地理解和利用这些功能。 首先,让我们来看一下属性占位符解析。在Spring Boot中,属性可以引用其他属性,通过`${}`语法实现,例如`${...
Spring Boot 配置文件占位符是指在 Spring Boot 项目中使用占位符来配置应用程序的各种参数。在 Spring Boot 中,默认的配置文件是 application.properties,通过在该文件中定义各种参数,可以实现对应用程序的配置...
这个类是Spring在初始化bean时用来解析和注入环境变量或系统属性的关键工具,使得开发者可以在配置文件中使用`${property}`形式的占位符,然后在运行时被实际值替换。 在Spring应用中,我们经常会在XML配置文件或者...
4. **NamedParameterJdbcTemplate**:对于包含命名参数的SQL语句,这个类提供了更友好的接口,避免了处理占位符顺序的问题。 5. **SqlSessionFactoryBean与SqlSessionTemplate**:对于使用MyBatis作为ORM框架的项目...
Spring允许我们在配置文件中使用 `${...}` 来引用占位符,然后通过PropertyPlaceholderConfigurer 或者 @Value 注解来解析这些占位符,并在运行时替换为实际值。 例如,如果你有一个名为 `application.properties` ...
Spring允许在配置中使用SpEL表达式作为占位符,如`@Value("#{systemProperties['java.version']}")`,这将注入Java版本号到bean的属性中。 7. **T()和P()函数** `T()`函数用于引入类型,如`T(java.util.Date)`...
如果有,就使用设置的TemplateContext替换掉占位符,填充上实际的数据。 5. **导出Excel**:最后,将处理后的内存工作簿写入到新的Excel文件中,完成导出过程。EasyPoi支持导出为xls和xlsx两种格式,只需要调整相关...
通过这种方式,我们可以轻松地在Spring配置文件中使用占位符语法`${property.name}`来引用`dbQuery.properties`中的属性。 ### 配置多个Properties文件 当需要引用多个属性文件时,可以使用`locations`属性代替`...
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...
4. **参数绑定**:使用占位符?进行参数绑定,避免SQL注入风险。例如,`update("INSERT INTO table (name, age) VALUES (?, ?)", "John", 25)`。 5. **事务管理**:尽管SimpleJdbcTemplate不直接处理事务,但可以...