当前位置: 代码迷 >> Web前端 >> javaBean属性的定名规范
  详细解决方案

javaBean属性的定名规范

热度:139   发布时间:2012-10-05 15:34:33.0
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>

原帖地址:http://hi.baidu.com/ljxsqqilvobfrye/item/9f51d210b601b63fb83180e6

  相关解决方案