- 浏览: 772904 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (208)
- Java (77)
- JavaScript (16)
- UML (1)
- Spring (24)
- Hibernate (11)
- J2EE部署 (18)
- 操作系统 (13)
- struts (11)
- jsp (3)
- J2EE (34)
- 数据库 (22)
- tomcat (4)
- apache (2)
- MyEclipse (13)
- Linux (14)
- Ext (6)
- Weblogic (2)
- 数据库 Oracle 空表导出 (1)
- Oracle (3)
- 编码 乱码 (1)
- 多线程 (5)
- jQuery (2)
- Apache Mina (1)
- ibatis (6)
- abator (1)
- svn (1)
- jvm (1)
- ERwin (2)
- mysql (2)
- ant (1)
- memcache (1)
- dubbo (1)
- PowerDesigner (1)
最新评论
-
di1984HIT:
Shallow heap & Retained heap -
tinguo002:
非常感谢 , 太棒了。
Spring注解方式,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法 -
白天看黑夜:
Apache Mina Server 2.0 中文参考手册(带 ...
Apache Mina – 简单的客户端/服务端应用示例 -
wumingxingzhe:
好文
Shallow heap & Retained heap -
di1984HIT:
学习了!!
工作流(Workflow)和BPM的不同
Spring配置之PropertyPlaceholderConfigurer,PropertyOverrideConfigurer
- 博客分类:
- Spring
PropertyPlaceholderConfigurer用于Spring 从外部属性文件中载入属性,并使用这些属性值替换Spring 配置文件中的占位符变量(${varible})。
BeanFactoryPostProcessor 接口是对Bean 工厂的后处理操作,Spring 的PropertyPlaceholderConfigurer 类是实现BeanFactoryProcessor 接口中非常有用的类。
Spring 的ApplicationContext 容器可以非常方便的使用PropertyPlaceholderConfigurer,只需通过简单的配置即可使用。
如果需要使用多个配置文件可以使用PropertyPlaceholderConfigurer 的locations属性。
properties文件的中的格式为:
-------------------分割线--------------------
PropertyOverrideConfigurer,类似于PropertyPlaceholderConfigurer,但是与后者相比,前者对于bean属性可以有缺省值或者根本没有值。如果起覆盖作用的 Properties文件没有某个bean属性的内容,那么缺省的上下文定义将被使用。
注意:bean 工厂的定义并不会意识到被覆盖,所以仅仅察看XML定义文件并不能立刻明显地知道覆盖配置是否被使用了。在有多个PorpertyOverrideConfigurer对用一个bean属性定义了不同的值的时候,最后一个将取胜(取决于覆盖的机制)。
Properties文件的一行配置应该是如下的格式:
beanName.property=value,其中beanName是需要覆盖的bean的名字,property是需要覆盖的属性名
实体:
配置文件:年龄age有注入值30
属性文件,将age设置为26:
chinese.age=26
测试代码:
运行结果:
test26
可以看到,age已经被properties中的数值覆盖了,没有使用配置文件中的数值
可以,可以用注解的方式注入properties属性值:
在service实现类中:
然后再spring配置文件中配置:
目前没有,你说的这种方式我试试看
BeanFactoryPostProcessor 接口是对Bean 工厂的后处理操作,Spring 的PropertyPlaceholderConfigurer 类是实现BeanFactoryProcessor 接口中非常有用的类。
Spring 的ApplicationContext 容器可以非常方便的使用PropertyPlaceholderConfigurer,只需通过简单的配置即可使用。
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="jdbc.properties" /> </bean>
如果需要使用多个配置文件可以使用PropertyPlaceholderConfigurer 的locations属性。
<bean id="configBean" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>hello.properties</value> <value>welcome.properties</value> <value>other.properties</value> </list> </property> </bean>
properties文件的中的格式为:
#oracle :\u6570\u636e\u6e90 datasource.type=oracle datasource.driverClassName=oracle.jdbc.driver.OracleDriver datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl #datasource.url=jdbc:oracle:thin:@192.168.1.2:1521:orcl datasource.username=cpcim2 datasource.password=cpcim2
-------------------分割线--------------------
PropertyOverrideConfigurer,类似于PropertyPlaceholderConfigurer,但是与后者相比,前者对于bean属性可以有缺省值或者根本没有值。如果起覆盖作用的 Properties文件没有某个bean属性的内容,那么缺省的上下文定义将被使用。
注意:bean 工厂的定义并不会意识到被覆盖,所以仅仅察看XML定义文件并不能立刻明显地知道覆盖配置是否被使用了。在有多个PorpertyOverrideConfigurer对用一个bean属性定义了不同的值的时候,最后一个将取胜(取决于覆盖的机制)。
Properties文件的一行配置应该是如下的格式:
beanName.property=value,其中beanName是需要覆盖的bean的名字,property是需要覆盖的属性名
实体:
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="test"> </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()); }
运行结果:
test26
可以看到,age已经被properties中的数值覆盖了,没有使用配置文件中的数值
评论
4 楼
bjyzxxds
2011-08-23
然后可以这么使用:
properties.getProperty("sm.webserviceurl")
properties.getProperty("sm.webserviceurl")
3 楼
bjyzxxds
2011-08-23
love297 写道
有没有尝试过 在bean中使用注解的方式 将properties属性值 注入到变量,类似:
@Value("${name}")
private String name;
@Value("${name}")
private String name;
可以,可以用注解的方式注入properties属性值:
在service实现类中:
import java.util.Properties; @Resource(name = "TESTProperties") Properties properties;
然后再spring配置文件中配置:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:TESTparam.properties" /> </bean> <bean id="TESTProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="singleton" value="true" /> <property name="properties"> <props> <prop key="sm.webserviceurl">${sm.webserviceurl}</prop> <prop key="sm.webserviceport">${sm.webserviceport}</prop> <prop key="sm.username">${sm.username}</prop> <prop key="sm.password">${sm.password}</prop> </props> </property> </bean>
2 楼
bjyzxxds
2011-08-18
love297 写道
有没有尝试过 在bean中使用注解的方式 将properties属性值 注入到变量,类似:
@Value("${name}")
private String name;
@Value("${name}")
private String name;
目前没有,你说的这种方式我试试看
1 楼
love297
2011-08-14
有没有尝试过 在bean中使用注解的方式 将properties属性值 注入到变量,类似:
@Value("${name}")
private String name;
@Value("${name}")
private String name;
发表评论
-
tomcat7可能带来的问题
2013-06-27 00:31 9841、struts标签校验更加严格,如果struts标签中存在嵌 ... -
Spring框架下获取Bean的几种方式
2011-11-03 00:06 4091通过xml配置文件 bean配置在xml里面,spri ... -
Activiti 5.6:子流程(subProcess)
2011-09-22 15:26 12722Activiti 5.6提供了子流程的实现,包括两种基于子流程 ... -
Activiti 5.6:配置与Spring整合
2011-09-21 13:00 11434Activiti 5.6与Spring整合也比较简单,其基本 ... -
Activiti 5.6安装配置
2011-09-21 11:38 5887安装配置Activiti 5.6还是比较容易的,在这里 ... -
Spring注解方式,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法
2011-09-01 23:08 18031启动工程时出现异常: Caused by: java.lang ... -
Spring 注解@Component,@Service,@Controller,@Repository
2011-09-01 21:02 1162Spring 2.5 中除了提供 @Component 注释外 ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2012-02-29 15:54 1091转自:http://www.ibm.com/developer ... -
log4j.properties配置详解
2011-07-07 14:41 1116Log4J的配置文件(Configuration File)就 ... -
Spring注解详解
2011-01-04 01:02 1440基于注释(Annotation)的配置有越来越流行的趋 ... -
Spring2.x与Spring1.x的单例模式的配置区别
2010-03-11 17:49 2144在Spring1.x中配置单例的方法为: <bean i ... -
一个Web Project中无法打断点的原因
2010-02-28 10:59 1248新建一个标准的SSH工程:struts2,spring2,hi ... -
Spring管理struts中的action
2009-10-28 16:49 1131让Spring管理struts中的action,可以在stru ... -
Spring学习笔记(八)——Spring远程服务
2009-09-17 09:59 1222目前Spring提供的远程服务主要有: ◆RMI:借助于Spr ... -
Spring学习笔记(七)——Spring持久化服务 DAO JDBC ORM
2009-09-15 17:55 3538对于RDBMS相关的应用而 ... -
Spring学习笔记(六)——Spring消息服务-JMS
2009-09-10 16:19 2873JMS即java消息服务。在JMS中JMS消息并不同应用直接交 ... -
Spring学习笔记(五)——Spring事务服务-JTA
2009-09-08 17:47 5252Spring为事务管理提供一 ... -
Spring学习笔记(四)——Spring框架概述
2009-09-03 21:46 1075Spring框架的分成工作,即模块化,完成的非常好。 1 ... -
Spring学习笔记(三)——Spring AOP
2009-09-03 15:34 15001.AOP及Spring AOP背景知识 ... -
Spring学习笔记(二)——Spring Ioc反转控制
2009-09-01 16:49 3227Gof曾提出,针对接口编程,而不是实现。 通常情况下,开发者将 ...
相关推荐
1. **Spring配置文件的扩展** - Spring 2.0引入了`PropertyPlaceholderConfigurer`,用于处理配置文件中的占位符,例如`${property_name}`。它会查找指定的属性源(如`application.properties`),并替换这些占位符...
<bean id="propertyOverrideConfigurer" class="org.springframework.beans.factory.config.PropertyOverrideConfigurer"> <value>classpath:test-overrides.properties ``` 在这个示例中,`test-overrides....
- **PropertyPlaceholderConfigurer** 和 **PropertyOverrideConfigurer**:用于在运行时动态替换Bean配置中的占位符。 ### 结论 Spring框架以其强大的功能和灵活性,成为Java企业级应用开发的首选框架之一。通过...
6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 ...
综上所述,Spring框架通过其强大的IoC容器提供了丰富的功能来帮助开发者更好地管理和配置应用程序中的对象及其依赖关系。通过对这些核心概念的理解和掌握,开发者可以更加高效地使用Spring框架进行软件开发。
1. **PropertyPlaceholderConfigurer**:用于在配置文件中解析占位符,将占位符替换为实际值。 2. **PropertyOverrideConfigurer**:用于覆盖已存在的Bean定义属性,通常用于环境特定的配置。 3. **自定义...
4.9.2.PropertyOverrideConfigurer类 4.10.使用alias节点为对象添加别名 4.11.IApplicationContext简介 4.12.配置应用程序上下文 4.12.1.注册自定义解析器 4.12.2.创建自定义资源处理器 4.12.3.配置类型别名 4.12.4....
- **PropertyPlaceholderConfigurer**:用于替换配置文件中的占位符。 - **PropertyOverrideConfigurer**:允许覆盖已存在的属性值。 #### 3.8 注册额外的自定义PropertyEditors #### 3.9 使用alias元素为现有Bean...