org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的systemPropertiesModeName属性
转自:https://www.cnblogs.com/huqianliang/p/5673701.html
使用PropertyPlaceholderConfigurer类载入外部配置
在Spring项目中,你可能需要从properties文件中读入配置注入到bean中,例如数据库连接信息,memcached server的地址端口信息等,这些配置信息最好独立于jar包或者war包,这样便于修改配置。Spring提供了PropertyPlaceholderConfigurer类来处理这件事情。
例如,要载入配置文件中的mysql配置信息:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mypage
jdbc.username=root
jdbc.password=123456
我们需要在spring配置文件中定义PropertyPlaceholderConfigurer的location属性,这个location指向配置文件的位置:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="location" value="file:${APP_HOME}/conf/mypage.properties"/>
</bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
在上面的例子中PropertyPlaceholderConfigurer类的systemPropertiesModeName的属性是SYSTEM_PROPERTIES_MODE_OVERRIDE这意味着可以从jvm虚拟机的参数中获得配置信息。
配置location的值中的${APP_HOME}可以根据环境不同设置不同的值,例如在开发环境,设置开发环境的目录,而在线上环境就要配置线上配置文件的路径了。
对于jar包文件,需要在启动jar包时指定APP_HOME的值,例如:
java -classpath test.jar -DAPP_HOME=/data0/conf cn.outofmemory.App
而对于运行在tomcat容器中的war包,需要修改下tomcat目录下的bin/catalina.sh文件,在此文件中添加或者修改如下变量的值:
JAVA_OPTS="-Xms2560m -Xmx5120m -DAPP_HOME=/application/outofmemory.cn/conf/"
注意-Xms2560m -Xmx5120m是为了修改虚拟机的内存值,-DAPP_HOME才影响配置文件位置。
给PropertyPlaceholderConfigurer指定必要的属性之后就可以通过${variable}的形式将配置文件中的值植入到bean中了。
如果你希望将配置文件放在jar包或者war包内,那么需要将location中的file:去掉,例如在war包中通常会放在/WEB-INF/conf路径下,那么可以这么写:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="location" value="/WEB-INF/conf/mypage.properties"/>
</bean>
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的systemPropertiesModeName属性的更多相关文章
- org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类
<bean id="investorQueryConfigurer" class="org.springframework.beans.factory.config ...
- 解决 java.lang.ClassNotFoundException: org.springframework.beans.factory.config.EmbeddedValueResolver
1.今天用maven配置了一下dubbo的项目发现启动项目后意外报错: java.lang.ClassNotFoundException: org.springframework.beans.fact ...
- org.springframework.beans.factory.config.MethodInvokingFactoryBean的使用
它有两种用法:一个是调用类的静态方法,一个是调用已在IOC容器中的bean的方法.调用结果也分两种,一种是有返回,那么也会作为bean注册到IOC容器中,另一种是没有返回值,那么实际上就是为了在启动时 ...
- java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableBeanFactory.getSingletonMutex()Ljava/lang/Object
© 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述 搭建SSH框架,没有添加事务时一切正常,最后添加完事务后报错,并且怎么弄都是一样.报错信息如下: 警告: Exception encou ...
- Exception in thread "main" java.lang.NoClassDefFoundError:org/springframework/beans/factory/config/EmbeddedValueResoler
参考自:https://www.cnblogs.com/quanbin/p/11100337.html 解决方法:检查发现spring的核心包spring-bean版本和其他核心包版本不同,更改为和其 ...
- NoSuchMethodError: org.springframework.beans.factory.config.BeanDefinition.getResolvableType
spring整合Mybatis报错: 解决方法: 检查maven依赖中的spring-jdbc和spring-webmvc是否版本一致 以下均为5.2.0.RELEASE版本 除此之外再检查是否有其他 ...
- org.springframework.beans.factory.BeanDefinitionStoreException
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'd ...
- org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSessionRepositoryFilter' is defined
spring-session 集成redis,web.xml配置filter时候出现 No bean named 'springSessionRepositoryFilter' is defined ...
- Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException
1.错误描写叙述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -he ...
随机推荐
- 笔记 — 动画效果(Css3)
/** * animation-name: 调用 @keyframes 所定义的动画 * animation-duration: 动画周期所花费的时间长度 * animation-timing-fun ...
- 时序分析:ARIMA模型(非平稳时间序列)
转载于一篇硕士论文.... ARIMA模型意为求和自回归滑动平均模型(IntergratedAut少regressive MovingAverageModel),简记为ARIMA(p,d,q),p,q ...
- SLAM: 关于Orb_SLAM的使用小综述
0.ORB_SLAM的官方网站:http://webdiis.unizar.es/~raulmur/orbslam/ 1. 参考知乎上对 orb-slam 的评价:orb-slam在众多SLAM方法中 ...
- REST ful
前后端分离.面向资源.无状态: 请求包含全部信息. 什么是 REST? 下面六条准则定义了一个 REST 系统的特征: 客户-服务器(Client-Server),提供服务的服务器和使用服务的客户需要 ...
- EMC VNX5200/5400存储 新增LUN与Hosts映射操作
EMC VNX5200/5400 1.创建RAID Groups 1.1 进入EMC VNX5200/5400主界面,依次选择Storage——Storage Pools——RAID ...
- [NOI2015]软件包管理器 树链剖分_线段树
没有太大难度,刷水有益健康 Code: // luogu-judger-enable-o2 #include <bits/stdc++.h> #define setIO(s) freope ...
- 【转载】MySQL之CONCAT()的用法
mysql CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一,下面就将为您详细介绍mysql CONCAT()函数,供您参考 mysql CONCAT(str1,st ...
- 记录:Ubuntu下升级Python从2.x到3.x
一.安装Python3 在Ubuntu中的终端输入:sudo apt-get install python3 提示资源被锁住,可能有另外一个程序在占用此资源. 解决方法:输入以下指令解锁资源 sudo ...
- es6-Symbol用法
1.symbol概念 这种数据类型提供独一无二值 比如,在JS中,我可以通过数据类型生成变量a=number05,也可以生成b=nubmer05,这两个变量可以说是相等的. 但是用symbol生成的值 ...
- CSS设置input默认样式
HTML <ul class="box"> <li> <input type="checkbox" name="vehi ...