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:

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

  • 相关阅读:
    ThinkPHP实现定时任务
    VUE 父子组件之间通信传值 props和 $emit,事件触发传值ref,以及兄弟组件之间的通信传值 eventBus
    JS链接转换为二维码
    VUE 动态切换列表active样式
    微信内置浏览器video标签自动全屏的问题
    JS监听video视频播放时间
    JS数据统计表 highcharts.js的运用
    JS 自动返回每个月的天数
    JS 一键复制插件应用 和 原生实现
    JS enter键一键登录
  • 原文地址:https://www.cnblogs.com/Oven5217/p/9008159.html
Copyright © 2011-2022 走看看