天天看点

xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)

 转:

项目中,经常会在xml中看到这样的写法:

xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)
xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)

看到了${}这样的表达式,脑海里面第一印象是不是我们jsp中的EL表达式?!

哈哈。。。

不过,这个真不是EL表达式,Spring提供了自己的EL表达式,可是它的格式是#{}

so....

${key}这样的表达式在XML中,代表引入的properties文件中key对应的一个变量值,完全是靠第三方jar自己解析的。

==============分割线===========

举例:

a.ibatis的配置文件中,${}的解析,直接上代码:

xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)
xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)

发现木有,完全就是解析字符的嘛!!!!代码参考:com.ibatis.common.xml.NodeletUtils.java

b.spring的配置文件中,${}的解析,直接上代码

xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)
xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)

Spring的代码是不是很晦涩,有兴趣的童鞋研究PropertyPlaceholderConfigurer(而且如果它未找到${xxx}中定义的xxx键,它还会去JVM系统属性(System.getProperty())和环境变量(System.getenv())中寻找)

总结:

xml文件中,如果使用了${},解析的工作依靠的就是第三方jar;