当前位置:编程学习 > JAVA >>

javaBean属性的命名规范

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>
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,