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

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
(包路径正确)

最佳答案

这是因为在后台将InternalConstant编译为带有静态CONSTANT_ONE()方法的类,该方法返回21,而不是字段。使用SpEL在Spring中可以调用静态方法:

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

尚未测试。

10-06 03:32