spring读取jdbc(file方式)
2024-08-31 02:08:17
使用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>
最新文章
- android handler ,message消息发送方式
- ORACLE清理、截断监听日志文件(listener.log)
- php 读取json数据文本所遇到的问题
- 浅入浅出EmguCv(三)EmguCv打开指定视频
- python核心编程(第二版)习题
- Web前端开发基础 第四课(盒代码模型)
- 关于Redis info的参数总结
- Spark Streaming揭秘 Day18 空RDD判断及程序中止机制
- CSS浮动、绝对、相对定位
- 基于RC4加密算法的图像加密
- Wannafly挑战赛26 B 冥土追魂
- beanshell获取响应结果数据
- nodejs图片总结
- Linux期中架构 全网备份案例
- 剑指offer四十七之求1+2+3+...+n
- Controller层@PathVariable使用
- 将UIView转成UIImage,将UIImage转成PNG/JPG
- kafka producer自定义partitioner和consumer多线程
- DenyHosts 阻止SSH暴力攻击
- 面试题:判断两个字符串是否互为回环变位(Circular Rotaion)
热门文章
- tomcat中AJP协议和HTTP协议的区别
- elasticsearch中query和filter的区别
- linux主机连接sftp报错received unexpected end-of-file from SFTP server
- List<;List<;Object>;>; list = new ArrayList<;List<;Object>;>;(); 求回答补充问题 list.get(position).add(Object);为什么会报错啊我想在对应的list里面添加对象
- Python之浅谈继承
- Markdown小白教学15分钟速成
- Mysql百万级数据查询优化
- css重设样式_清除浏览器的默认样式
- CSS3 target 选择器_:target伪类的使用
- 51nod1524 最大子段和V2