Spring:注入Scala常量

tol*_*ius 4 java spring scala

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

object InternalConstant {

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

}
Run Code Online (Sandbox Code Playgroud)

像Java一样注入它们:

<bean id="daBean" class="my.package.DaClass">
    <constructor-arg>
        <util:constant static-field="my.package.InternalConstant.CONSTANT_TWO"/>
    </constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)

得到一个 java.lang.NoSuchFieldException: CONSTANT_TWO

(包路径正确)

Tom*_*icz 6

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

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

虽然没有测试过.