简单的内部常量,不应将其外部化为属性:
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()}"/>
尚未测试。