javabean属性名规范问题

来源:百度文库 编辑:神马文学网 时间:2024/05/17 01:17:37

Spring框架,作为Java开源框架中的佼佼者,我们经常会利用他的IOC(Inverser of Control)容器和AOP(Aspect Oriented Programming)面向切面的编程来解决我们繁杂的业务层管理。

      在使用Spring所提供的各项丰富而神奇的功能之前,我们必须在Spring IOC容器中装配好Bean,并建立Bean和Bean之间的关联关系。一般情况下,在配制bean时,需要为其指定一个id属性作为Bean的名称,在配置文件或程序中提供标识。id在IOC容器中必须是唯一的。呵呵我就犯过这样的错误,找了老半天,汗颜啊^^。在Spring配置属性时候发现的小问题,呵呵的确是有够小的!

        Spring配制文件 元素所指定的属性名和Bean实现类的Setter方法满足Sun公司的JavaBean的属性名规范,想必大家都清楚。我就不必废话了。xxx的属性名对应setXxx()的方法。

        一般情况下。Java的属性变量名都已小写字母开头,如:userName,showMessage等,但也存在着特殊情况,考虑到一些特定的有意思的英文缩略词如(USA,XML等),JavaBean也允许大写字母起头的属性变量名,不过必须满足“变量的前两个字母要么全部大写,要么全部小写”的要求,如:IDCode、ICCard、idCode等属性变量名是合法的,而iC、iCcard、iDCode等属性变量名是非法的。正是由于这个原因造成了下面这种情况:

下面我们来做个测试看看,在Spring容器中配置一个类,为其注入属性,get/set方法为eclipse自动生成

       public class Test {
              //注意这是个非法的变量名
              
               private String iDcode;

               public String getIDcode() {
                    return iDcode;
               }

               public void setIDcode(String dcode) {
                    iDcode = dcode;
               }
                //测试

               public static void main(String[] args) {
                       ApplicationContext ctx = new FileSystemXmlApplicationContext          ("classpath:applicationContext.xml");
                        Test t = (Test) ctx.getBean("test");
                        System.out.println(t.getIDcode());
                }

       }

          这是Spring配置文件中的配置
         
          
                
                      
                

         

           让我们来运行下看看会发生什么情况,控制台打印出这么一句话:          
           Invalid property 'iDcode' of bean class [com.test.Test]: Bean property 'iDcode' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?

            Spring给出了启动失败的错误原因,但是错误信息具有很强的误导性,因为他抱怨Test中没有提供对于iDocode的setter方法,但事实上我们提供了setIDcode()方法。那到底是怎么会事情呢?看看Spring的配置文件吧,它指定的就是我们所说的非法的属性名,而这个非法的属性名永远不可能有对应的Settter方法,因此错误就产生了。

         下面我们改写配置文件为(粗体的地方为改变之处):
         
                
                      
                

         

           而对于Test的属性iDcode可以不用修改,再运行发现没有报错了。OK,现在我们知道了。Spring的配置文件属性名只对应于Bean类的get/setXxx()方法。针对于大写字母开头的变量名总显得比较另类,其实象"QQ,MSN"之类的专业术语一律调整为小写字母已保证命名的统一,也就可以减少出错的几率了。OK今天就写到这里