Spring中两种引入配置文件方式
用过Spring的人都知道,我们一般把数据库的配置、日志的配置或者其他的通用配置放在单独的配置文件中,在和Spring整合时,一般通过以下两种方法引入:
- <context:property-placeholder>
- <util:properties>
下面我们来对比一下这两种方法。
<context:property-placeholder>
- 首先,这个是Spring中context下对应的一个标签。要使用它需要在Spring的配置文件头部中引入其对应的命名空间。
- 其使用方式也很简单
<context:property-placeholder location="classpath:db.properties" /> <!-- 引入配置文件 –>
<!--该标签对应的属性有:
location : 所需要引入的配置文件,当有多个时,可以使用逗号分开。项目里的配置文件一般在类路径下,所以可以使用classpath:xxxorder :一般我们可能会使用多个context:property-placeholder标签引入多个配置文件,order这个属性可以控制配置文件加载的顺序,order数字越低越先加载ignore-resource-not-found :boolean值,可以控制是否忽略引入的文章找不到的情况,为true代表忽略,当引入文件不存在时,不会报错properties-ref : 除了引入文件外,还可以引入本地定义的配置对象local-ovriride : boolean值,控制是否properties-ref覆盖location中的属性值-->
通过上面的方法就在Spring中引入了该配置文件。其使用方式是通过$,例如:${xxx}。在Spring xml中可以使用${xxx},在java代码中可以使用@Value(“${xxx}”),类似于
<property name="url" value="${mysql.jdbc.url}" />
@Value("${mysql.jdbc.url}")
private String mysqlJdbcUrl;
<util:properties>
- 其实Spring中util下的一个标签。使用它需要引入util的命名空间。
- 使用方法也很简单
<util:properties id="wxProperties" location="classpath:wx.properties" />
<!--
id :该配置文件对象名称,可以通过该名称引用配置文件中的属性 location : 和上面的标签的location属性类似 -->
配置完成后,可以在java类中使用,使用方式: @Value("#{wxProperties['jdbc.driver']}") ,类似于
@Value("#{wxProperties['jdbc.driver']}")
private String jdbcDriver;
区别
<context:property-placeholder> 定义的变量只能够在其对应的上下文中使用
<util:properties>在整个Spring中都能使用
之前做一个项目时,由于没有发现这两个的区别,混用了这两个标签,最后导致了一部分定义在<context:property-placeholder>的变量无法使用。原因就是其只能作用在对应的上下文中,而我们使用该变量的位置不在其上下文中,最后导致了null。解决方法就是1.使用第二个标签;2.在我们使用的变量的地方引入<context:property-placeholder>
Spring中两种引入配置文件方式的更多相关文章
- mybatis中两种取值方式?谈谈Spring框架理解?
1.mybatis中两种取值方式? 回答:Mybatis中取值方式有几种?各自区别是什么? Mybatis取值方式就是说在Mapper文件中获取service传过来的值的方法,总共有两种方式,通过 $ ...
- 【转】Spring 中三种Bean配置方式比较
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...
- Spring 中三种Bean配置方式比较
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...
- Java中两种实现多线程方式的对比分析
本文转载自:http://www.linuxidc.com/Linux/2013-12/93690.htm#0-tsina-1-14812-397232819ff9a47a7b7e80a40613cf ...
- python中两种栈实现方式的性能对比
在计算机的世界中,同一个问题,使用不同的数据结构和算法实现,所使用的资源有很大差别 为了方便量化python中算法的资源消耗,对性能做测试非常有必要,这里针对stack做了python语言 下的性能分 ...
- spring的两种属性注入方式setter注入和构造器注入或者自动注入
1.这里的属性自动注入,与注解配置bean是两回事.这里的自动注入,指的是bean属性的自动注入. bean属性自动注入,包括byNAme和ByType两码事. 2.所有的applicationCon ...
- Vue中两种跳转方式
第一种:通过标签跳转,<router-link></router-link> 第二种:通过js跳转,定义点击事件进行跳转
- Spring cloud 两种服务调用方式(Rest + Ribbon) 和 Fegin方式
1:Rest + Ribbon @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } @Auto ...
- Spring中三种配置Bean的方式
Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...
随机推荐
- linux中常用的60个命令及作用详解
Linux 必学的 60 个命令 Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在 Linux 系统上工作离不开使用系统 ...
- dp(电梯与楼梯)
http://codeforces.com/problemset/problem/1249/E E. By Elevator or Stairs? time limit per test 2 seco ...
- SQL在Oracle内部的具体处理流程
下图显示了SQL在Oracle内部处理的一般阶段:解析.优化.产生行源和执行.数据库可能会忽略某些步骤,这取决于具体的语句. ...
- 《死磕 Elasticsearch 方法论》:普通程序员高效精进的 10 大狠招!(完整版)
原文:<死磕 Elasticsearch 方法论>:普通程序员高效精进的 10 大狠招!(完整版) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链 ...
- 深入理解js闭包【写的通俗易懂,很值的阅读】
详细内容在下面这个链接里面: https://www.cnblogs.com/uedt/archive/2010/10/28/1863389.html 能写出这样的文章,定是大佬!
- window.onload和document.ready的区别
window.onload和document.ready虽然两个方法的运行效果都一样,但他们之间是存在着区别的: 一.从执行的时间 window.onload在dom文档结构加载完毕以后就可以执行,不 ...
- lLinux的常用命令
命令基本格式: 命令提示符:[root@localhost ~]# root 代表当前的登录用户(linux当中管理员账号是root) @ 无实际意义 localhost ...
- Oracle 11g+Windows10 x64安装、配置过程记录
备注:本想在自己电脑上安装个oracle练习用,但是害怕安装过程中出现问题,而oracle的卸载又是出了名的麻烦,所以用虚拟机搭建了一个跟本机一样的系统,同时记录下安装的每一步. 环境:windows ...
- ll字段 详解 文件权限
文件类型和权限 硬链接总数 属主用户名 属组组名 文件大小(字节) 上次修改时间 文件/目录名 drwxr-xr-x 15 lb lb 4096 10月 19 01:11 ./ drwxr-xr-x ...
- Installation of the latest version of netease-cloud-music on Fedora 30 linux platform
Installation of the latest version of netease-cloud-music on Fedora 30 linux platform Abtract As we ...