javaBean屬性的命名規范 – JAVA編程語言程序開發技術文章

Sping配置文件中<property>元素所指定的屬性名和Bean實現類的Setter方法滿足Sun javaBean的屬性命名規范:xxx的屬性對應setXxx()方法.一般情況下,java的屬性變量都以小寫字母起頭,如maxSpeed.brand等.但也存在特殊的情況,考慮到一些特定意義的大寫英文縮略詞(如XML.USA等),javaBean也允許大寫字母起頭的屬性變量名,不過必須滿足"變量的前兩個字母要麼全部大寫,要麼全部小寫"的要求,如brand.IDCode.IC.ICCard等屬性變量名是合法的,而iC.iCcard.iDCode等屬性變量名則是非法的.這個並不光為人知的JavaBean規范條款引發眾多讓人摸不著頭的配置問題.下面是一個"違反"瞭JavaBean屬性名規范的類:
public class Foo{
private String iDCode;
public void setIDCode(String iDCode){
this.iDCode=iDcode;}
}
在Spring配置文件中,我們可能會想當然的為Foo提供以下的配置:
<bean id="foo" class="com.lxm.attr.Foo">
<property name="iDCode" value="0000"/>
</bean>
當我們試圖啟動Sping容器時,將得到啟動失敗的結果,控制臺輸出以下的錯誤信息"
Error setting property values;nested exception is org.springframework.
beans.NotWribablePropertyExcetion:Invalid property 'iDCode' of bean class[com.lxm.attr.Foo]:Bean property 'iDCode' is not wribable or has an invalid Setter method. Did you mean 'IDCode'? Caused by:org.springframework.beans.NotWribablePropertyException:Invalid property 'iDCode' of bean class
Spring給出瞭啟動失敗的錯誤原因,但錯誤信息具有很強的誤導性,因為他抱怨Foo中沒有提供對應於iDCode的Setter方法,但事實上Foo 已提供瞭 setIDCode()方法.其實真正的錯誤根源是我們在Spring配置文件中指定瞭一個非法的屬性名iDcode,這個非法的屬性名永遠不可能有對應的Setter方法,因此錯誤就產生瞭.糾正的辦法是將配置文件中的屬性名該為IDCode:
<bean id="foo" class="com.lxm.attr.Foo">
<property name="IDCode" value="0000"/>
</bean>

發佈留言