zoukankan      html  css  js  c++  java
  • 日常踩坑笔记:spring的context:property-placeholder标签

    背景:

    原来的项目一直跑着没有问题,今天突然想在原有项目的基础上,加上redis进行数据的缓存,原来项目的架构就是传统的SSM框架,于是,大刀阔斧的开始改装了。。。

    编写redis的配置文件——redis.properties。。。

    编写redis的xml配置文件——redis-context.xml。。。

    在spring的主配置文件(我的ssm项目本来只有这么一个xml配置文件)spring-mvc.xml引入刚刚编写redis-context.xml文件。。。

    在数据层注入redis实例,进行数据缓存。。。

    一顿操作猛于虎,一切貌似挺简单,挺顺利,但是启动的时候就开始报错了,一直在报Could not resolve placeholder错误:

    仔细观察了配置文件,确实有这个配置啊,而且也通过spring的context:property-placeholder标签引入的该配置文件:

    但是就是报找不到这个属性,于是,去问问度娘吧,原来,spring容器只会维护一个PropertyPlaceholderConfigurer的bean实例,当spring发现容器中有一个该实例后,就会忽略其余的,所以,该标签只能配置一个,多余的spring会自动忽略。

    问题知道了,那么怎么解决呢?

    度娘的说法很简单,只需要在context:property-placeholder标签中添加一个属性ignore-unresolvable="true"即可!

    事实证明,我想的太简单了,确实,这样的做法大部分情况下就解决了上述报的错误,只要在所有的context:property-placeholder标签上都加上ignore-unresolvable="true"属性就可以了,可是我翻遍了我的项目,确保所有的context:property-placeholder标签上都加上了这个属性,可是还是报上述的错误,耐着性子,继续找。。。

    既然是配置文件方面报的错,那就把重点放在配置文件的读取上,于是我发现了数据库的配置文件,是这么读取的:

    眼前是不是一亮,虽然不是context:property-placeholder标签,但它也是一个PropertyPlaceholderConfigurer实例,那就没跑了,肯定是你了,进去看一看,果然有这个属性:

    果断的给它配置一个华丽丽的true:

    再次启动,完美。。。可以开心的去写缓存了。。。

  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/Oven5217/p/9008159.html
Copyright © 2011-2022 走看看