美文网首页
Spring-PlaceHolder,找不到变量替换

Spring-PlaceHolder,找不到变量替换

作者: Ylm007 | 来源:发表于2017-11-25 11:30 被阅读0次

问题描述:Spring中xml配置并使用了properties文件,项目启动时,提示找不到变量。

引入properties的配置如下

<context:property-placeholder location="classpath:important.properties,classpath:extend.properties"/>

properties文件如下

order.jdbc0.url=jdbc:mysql://45140.mysql.db.com:3358/order?characterEncoding=UTF8
order.jdbc1.url=jdbc:mysql://45140.mysql.db.com:3358/order?characterEncoding=UTF8
order.jdbc2.url=jdbc:mysql://45140.mysql.db.com:3358/order?characterEncoding=UTF8

变量如下:

<bean id="dataSource0" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <property name="url" value="${order.jdbc0.url}" />
    <property name="username" value="${order.jdbc0.username}" />
    <property name="password" value="${order.jdbc0.password}" />
    <property name="filters" value="config" />
    <property name="maxWait" value="15000" />
    <property name="timeBetweenEvictionRunsMillis" value="60000" />
    <property name="minEvictableIdleTimeMillis" value="180000" />
    <property name="validationQuery" value="SELECT 'x'" />
    <property name="testWhileIdle" value="true" />
    <property name="testOnBorrow" value="false" />
    <property name="testOnReturn" value="false" />
    <property name="poolPreparedStatements" value="true" />
    <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
</bean>

追踪:确认变量的k和别名一一对应,无重复引用,placeHolder确实加载了properties文件,变量所在bean的初始化在placeHolder之后,和Bean启动顺序无关。

Debug了placeHolder的变量栈,发现变量池中变量order.jdbc0.url前面有一个制表符,导致识别不了这个变量。properties文件使用GBK编码,且此变量位于该文件的第一行第一个字符起,在变量前面加上一个回车后问题解决;又,把原文件使用txt清洗后再放进来,问题还会出现,因此必然和编码转换相关。

相关文章

  • Spring-PlaceHolder,找不到变量替换

    问题描述:Spring中xml配置并使用了properties文件,项目启动时,提示找不到变量。 引入proper...

  • shell中${}和$()的区别

    ${}是变量替换,$()是命令替换 eg:

  • shell 替换变量内的指定字符

    已有变量,但是需要替换其指定字符 将变量A中的src内容替换为target内容。 替换一次 全部替换 适用场景,逗...

  • 数仓--Hive-面试之向Hive中传入变量的方式

    Hive向程序中传递变量的方式 暴力替换字符串替换正则替换模板引擎 系统环境变量shell环境变量:${env:v...

  • shell系列2-变量

    一.自定义变量 变量是某个值的名称,引用变量值就称为变量替换$符号是变量替换符号,如variable是变量名,那么...

  • linux学习 Day6-bash特性

    bash支持的引号··(反引号):命令替换“”(双引号):弱引用,可以实现变量替换‘’(单引号):强引用,不完成变量替换

  • shell变量

    变量赋值 定义变量 =两边不能有空格 双引号可以替换变量 $username。单引号不能替换变量,单引号所见即所得...

  • Shell基础脚本-变量与参数

    1、变量替换 变量名是其所指向值的一个占位符(placeholder)。引用变量值的过程我们称之为变量替换(var...

  • vscode 替换变量

    变量替换 Visual Studio Code在调试和任务配置文件以及某些选择设置中支持变量替换。使用$ {var...

  • makefile--变量的应用(上)

    变量的高级应用(上) 1. 变量值的替换 使用指定字符(串)替换变量值中的后缀字符(串) 语法格式: ...

网友评论

      本文标题:Spring-PlaceHolder,找不到变量替换

      本文链接:https://www.haomeiwen.com/subject/bvzqbxtx.html