用过Spring的人都知道,我们一般把数据库的配置、日志的配置或者其他的通用配置放在单独的配置文件中,在和Spring整合时,一般通过以下两种方法引入:

  1. <context:property-placeholder>
  2. <util:properties>

下面我们来对比一下这两种方法。

<context:property-placeholder>

  • 首先,这个是Spring中context下对应的一个标签。要使用它需要在Spring的配置文件头部中引入其对应的命名空间。
  • 其使用方式也很简单 
<context:property-placeholder location="classpath:db.properties" />  <!-- 引入配置文件 –> 
<!--该标签对应的属性有:
location : 所需要引入的配置文件,当有多个时,可以使用逗号分开。项目里的配置文件一般在类路径下,所以可以使用classpath:xxx
 
order :一般我们可能会使用多个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中两种引入配置文件方式的更多相关文章

  1. mybatis中两种取值方式?谈谈Spring框架理解?

    1.mybatis中两种取值方式? 回答:Mybatis中取值方式有几种?各自区别是什么? Mybatis取值方式就是说在Mapper文件中获取service传过来的值的方法,总共有两种方式,通过 $ ...

  2. 【转】Spring 中三种Bean配置方式比较

    今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...

  3. Spring 中三种Bean配置方式比较

    今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...

  4. Java中两种实现多线程方式的对比分析

    本文转载自:http://www.linuxidc.com/Linux/2013-12/93690.htm#0-tsina-1-14812-397232819ff9a47a7b7e80a40613cf ...

  5. python中两种栈实现方式的性能对比

    在计算机的世界中,同一个问题,使用不同的数据结构和算法实现,所使用的资源有很大差别 为了方便量化python中算法的资源消耗,对性能做测试非常有必要,这里针对stack做了python语言 下的性能分 ...

  6. spring的两种属性注入方式setter注入和构造器注入或者自动注入

    1.这里的属性自动注入,与注解配置bean是两回事.这里的自动注入,指的是bean属性的自动注入. bean属性自动注入,包括byNAme和ByType两码事. 2.所有的applicationCon ...

  7. Vue中两种跳转方式

    第一种:通过标签跳转,<router-link></router-link> 第二种:通过js跳转,定义点击事件进行跳转

  8. Spring cloud 两种服务调用方式(Rest + Ribbon) 和 Fegin方式

    1:Rest + Ribbon @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } @Auto ...

  9. Spring中三种配置Bean的方式

    Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...

随机推荐

  1. MySQL-第十五篇使用连接池管理连接

    1.数据库连接池的解决方案是: 当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池.每次应用程序请求数据库连接时,无需重新打开连接,而是从连接池中取出已有的连接使用,使用完后不 ...

  2. linux驱动模型——platform(1)

    一.驱动模型包含什么? 1.1. 类class 1.1.2. 它能够自动创建/dev下的设备节点,不需要mknod /dev/xxx c x x创建.当然class还有其另外的作用,且自动创建设备节点 ...

  3. [BZOJ4182]Shopping (点分治+树上多重背包+单调队列优化)

    [BZOJ4182]Shopping (点分治+树上多重背包+单调队列优化) 题面 马上就是小苗的生日了,为了给小苗准备礼物,小葱兴冲冲地来到了商店街.商店街有n个商店,并且它们之间的道路构成了一颗树 ...

  4. h5与app交互

    现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次就来捋 ...

  5. openstack stein部署手册 7. nova-compute

    # 安装程序包 yum install -y openstack-nova-compute # 变更配置文件 cd /etc/nova mv nova.conf nova.conf.org cat & ...

  6. Python3安装教程

    目录 1. 推荐阅读 2. 安装包下载 3. 安装步骤 1. 推荐阅读 Python基础入门一文通 | Python2 与Python3及VSCode下载和安装.PyCharm破解与安装.Python ...

  7. 基于双TMS320C6678+双XC6VSX315T的6U VPX高速数据处理平台

    基于双TMS320C6678+双XC6VSX315T的6U VPX高速数据处理平台   一.板卡概述 板卡由我公司自主研发,基于VPX架构,主体芯片为两片 TI DSP TMS320C6678,两片V ...

  8. 在centOS7.2上编译gcc4.4.7

    1.前置 首先,可以参考我的上篇文章,在centOS7.2上编译gcc4.1.2,过程基本一致,这里只对可能遇到的错误情况进行说明. 2.安装texinfo4.8 我的centos7.2版本,自带的是 ...

  9. 基于firebird的数据转存

    功能:使用于相同的表从一个数据库转存到另一数据库: 方式:直连fdb并加载django,引用django的model完成: 原因:1.select * from *** 返回的数有很多None,直接i ...

  10. Typescript + TSLint + webpack 搭建 Typescript 的开发环境

    (1)初始化项目 新建一个文件夹“client-side”,作为项目根目录,进入这个文件夹: 我们先使用 npm 初始化这个项目: 这时我们看到了在根目录下已经创建了一个 package.json 文 ...