【发布时间】:2014-11-24 18:46:44
【问题描述】:
我正在尝试了解用 XML 编写的 spring 配置。
...
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" >
<!-- These properties are replaced by Maven "resources" -->
<property name="url" value="#{$.val('db.url')}" />
<property name="driverClassName" value="#{$.val('db.driver')}" />
<property name="username" value="#{$.val('db.user')}" />
<property name="password" value="#{$.val('db.password')}" />
</bean>
值字段的变量定义为 "#{$.val(...)}" 。我知道像 db.user 这样的东西是从基本 xml 文件中定义的项目配置文件中提取的。有人能解释一下“#{$.val(...)}”是如何工作的吗?
【问题讨论】:
-
感谢@isah ...帮助!
-
@isah 解释了 # 和 $ .. 的使用,但是如果 $ 用于立即评估,而 # 用于延迟评估,那么它们的行为如何。我的意思是如果定义是在第一次加载页面时加载的,那么使用 $ 就变得多余了。还有val()的功能,是用来解析conf文件还是其他东西,因为我认为spring支持conf解析。
-
是的,我没有关于 $.val() 使用的答案。我从未见过它,它看起来像一个隐式方法。通常,您通常对属性文件执行 ${db.url} 或 #{db.url}。
-
谢谢。你真的让我朝着正确的方向前进! @isah