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:

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

  • 相关阅读:
    Python学习——初识类与对象
    用Python代码实现贪心问题:最优合并问题、程序存储问题、最优服务次序问题
    爬虫解析库:XPath
    python基础学习之 模块导入
    python 数据结构
    深入理解vue中的slot与slot-scope
    BeanFactory和FactoryBean的区别简介
    Spring Boot 使用Caffeine缓存
    冒泡算法和递归算法demo
    AJPFX总结方法的特点
  • 原文地址:https://www.cnblogs.com/Oven5217/p/9008159.html
Copyright © 2011-2022 走看看