【问题标题】:Spring: Injecting a Scala ConstantSpring:注入 Scala 常量
【发布时间】:2011-12-04 19:00:54
【问题描述】:

简单的内部常量,不应外化为属性:

object InternalConstant {

  val CONSTANT_ONE: Byte = 21
  val CONSTANT_TWO: Byte = 42

}

像使用 Java 一样注入它们:

<bean id="daBean" class="my.package.DaClass">
    <constructor-arg>
        <util:constant static-field="my.package.InternalConstant.CONSTANT_TWO"/>
    </constructor-arg>
</bean>

得到java.lang.NoSuchFieldException: CONSTANT_TWO

(包路径正确)

【问题讨论】:

    标签: java spring scala


    【解决方案1】:

    这是因为在幕后InternalConstant 被编译成一个类,静态CONSTANT_ONE() 方法返回21,而不是一个字段。并且可以在 Spring 中使用 SpEL 调用静态方法:

    <constructor-arg value="#{T(my.package.InternalConstant).CONSTANT_TWO()}"/>
    

    还没有测试过。

    【讨论】:

    • 不错。虽然它不能再是static-field,但这有效:
    • "util:constant" 没有 "value" 属性,它应该是 "constructor-arg" :) 所以一个完整的版本应该是:
    • 傻了,谢谢!顺便说一句,您可以随意编辑其他人的帖子。
    • 哦.. 好吧,不知道这是否被认为是“正常的”.. 在过去的几周里开始使用 stackoverflow。谢谢托马斯!
    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2016-09-04
    • 1970-01-01
    相关资源
    最近更新 更多