【问题标题】:what does # and $ in spring config file in xml format mean?xml格式的spring配置文件中的#和$是什么意思?
【发布时间】: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

标签: xml spring


【解决方案1】:

我刚刚介绍了 'exp'.'exp' 在 el 中的工作原理;这里是 '$'.val()。 这意味着 bean id 被引用。在这种情况下,这意味着 $ 已在另一个 xml 文件中定义。

<bean id="$" class="....Config">
    <constructor-arg index="0" value="/etc/...conf">
</bean>

因此,正在对 conf 文件中定义的“db.something”属性进行延迟调用,该属性使用 bean id "$" 引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2015-10-06
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多