Spring-property文件配置方法以及如何与工程分离~xml使用${}
来源:互联网 发布:蚁群算法的应用 编辑:程序博客网 时间:2024/05/20 19:32
原文:http://rookiedong.iteye.com/blog/1849548
1,Spring使用property文件作为配置源
工程中难免出现一些需要每次部署都需要配置的参数,如数据源连接参数等,测试环境跟实际运行环境是不一样的。
使用spring框架的话,这些参数可能独立分布在不同的springContex配置文件里面。
可以考虑将这些参数独立到一个配置文件并可以让spring方便加载注入。可选的一个方案是使用java的property文件,将所有的配置参数都写到property文件里面,使用${key}来在spring配置文件里面得到这个参数。
例子:
property文件global-config-file.properties:
#FOR dataSourcejdbc.dataSource.url=jdbc:postgresql://192.168.1.118:5432/DB_namejdbc.dataSource.username=postgresjdbc.dataSource.password=123
示例配置的是数据源参数。
之后在springContext的配置文件中,加入下面代码,:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="ignoreUnresolvablePlaceholders" value="true" /> <property name="location" value="classpath:global-config-file.properties"/> </bean>
即引入PropertyPlaceholderConfigurer来读取property配置文件,spring框架会从其那里获取到需要的配置参数。
之后再用${key}的格式取代你数据源配置参数:
<bean id="myBatisDataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="org.postgresql.Driver"></property><property name="url"value="${jdbc.dataSource.url}"> </property><property name="username" value="${jdbc.dataSource.username}"></property><property name="password" value="${jdbc.dataSource.password}"></property></bean>
例如:${jdbc.dataSourcurl}:框架会将global-config-file.properties读到jdbc.dataSource.url的值“jdbc:postgresql://192.168.1.118:5432/DB_name”填入${jdbc.dataSource.url}所在的位置。
2,将property配置文件与工程分离(独立到服务器中)
为什么想到要这样做呢?
这是在实际开发部署中,每次将工程打包部署到服务器,都需要在服务器端修改工程的配置项(如数据源等),感觉很麻烦。
如果工程优先读取放置在服务器上的配置文件,没有此配置文件才从工程目录里面读取,那样就可以将只在服务器存放一份配置文件并修改成与服务器运行环境一致,今后部署即可不用每次都修改工程配置文件了。
2.1 做法:
刚才我们在第1点添加了一个propertyConfigurer,现将其改名为“propertyConfigurer2”,并添加一个“propertyConfigurer1”,两者配置为:
<bean id="propertyConfigurer1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="order" value="1"/> <property name="ignoreResourceNotFound" value="true"/> <property name="ignoreUnresolvablePlaceholders" value="true" /> <property name="location" value="file:C:/tempSys/config/global-config-file.properties"/> </bean> <bean id="propertyConfigurer2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="order" value="2"/> <property name="ignoreUnresolvablePlaceholders" value="true" /> <property name="location" value="classpath:global-config-file.properties"/> </bean>
order属性表示加载顺序,这种配置表示先加载propertyConfigurer1,在加载propertyConfigurer2,两者配置文件中有同样的参数,后加载的参数不会覆盖先加载的。
propertyConfigurer1需要添加一个 <property name="ignoreResourceNotFound" value="true"/>属性,表示当找不到这个配置文件时,则跳过,这样就不会抛出FileNotFoundException了。
这样配置之后,工程会在启动时,首先检查C:/tempSys/config/global-config-file.properties是否存在,如果存在则加载器配置,随后再加载项目目录下的global-config-file.properties;如果不存在,则直接加载项目目录下的global-config-file.properties。
这样做不单可将配置与开发环境分离出来,避免每次部署时繁琐的配置修改工作。同时这也提高了系统部署时的安全性,比如,实际运行的正式数据库账户密码信息将是十分机密的信息,由运维人员保管维护,可能对开发人员都不能公开(开发人员只知道开发测试数据库的信息),将这些信息直接配置在服务器上,服务器也由运维人员进行管理,这样可以减少机密信息的知晓人群,提高安全性。
- Spring-property文件配置方法以及如何与工程分离~xml使用${}
- Spring property文件配置方法以及如何与工程分离
- Spring property文件配置方法以及如何与工程分离
- spring配置property文件
- Spring中property资源文件动态映射xml载入方法
- spring配置中,properties文件以及xml文件配置问题
- Spring配置分离、配置文件与项目分离
- 如何在web.xml配置spring,struts2配置以及过滤器
- spring与hibernate整合-使用properties文件分离数据库连接设置
- spring与hibernate整合-使用properties文件分离数据库连接设置
- spring使用AOP如何配置ApplicationContext.xml
- Spring xml 配置使用外部config 文件
- Tomcat配置虚拟路径,使上传文件与服务器及工程文件分离
- 使用JDBCTemplate实现与Spring结合,方法公用 ——Spring配置(applicationContext.xml)
- spring XML文件配置
- spring 配置xml文件
- spring xml文件配置
- eclipse中,工程与源码分离的工程创建方法
- 今年暑假不AC
- Java中的Enum的使用与分析
- VB获取IE8地址栏的URL
- sublime text 3 快捷键大全以及配置编译环境
- MyEclipse集成Tomcat启动报错
- Spring-property文件配置方法以及如何与工程分离~xml使用${}
- modelsim仿真ISE工程时出现# ** Error: (vlog-19) Failed to access library 'rtl_work' at "rtl_work
- vbMHWB控件同webbrowser一样
- poj 3641 快速幂+米勒罗宾判断大素数
- Hibernate Hql查询方法
- 数据仓库之mondrian的学习
- 7月21日Objiect的常用类本人为新手正在学习Java中把每天学的东西晚上都会在博客记录希望大神可以指点 不足在此谢过。
- 关于Scrollview嵌套ListView,使用setListViewHeightBasedOnChildren(ListView listView) ,在小米手机上崩溃问题
- 在IE8上eWebEdit编辑器失效