2011-10-10 73 views
4

簡單內部常量,不應該被外部化到屬性:春天:注入斯卡拉恆

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

(封裝路徑爲正確

回答

6

那是因爲幕後的InternalConstant被編譯成靜態的CONSTANT_ONE()方法返回21,而不是字段。並且在Spring中使用SpEL調用靜態方法是可能的:

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

雖然沒有測試過。

+0

niice。雖然它不能再是'靜態字段',但是這個工作: tolitius

+0

好了,我糾正了我的答案,謝謝! –

+0

「util:constant」沒有「value」屬性,它應該是「constructor-arg」:)所以一個完整的版本會讀爲: tolitius