如果属性名称为name,set方法是否一定要是setName
类推:属性名称为id,set方法是否一定要是setId请问Spring对bean类是不是要求这种命名规范还是说随便命名都可以

解决方案 »

  1.   

    我记得是强制要求的
    用SSH框架时,会自动注入数值,它调用的就是set方法,是要按命名规范的
      

  2.   

    要清楚属性名和方法的关系,在Java里,get、set就是属性访问器,其对应的方法是getXxx,setXxx,其属性是get或set后面的字符串,然后第一个字符串变小写,那就是其属性了。例如有个属性名称为:name,那么在使用其写属性时一定是这样:把属性名的第一个字母大写,然后在前面加个set。
      

  3.   

    属性名 跟方法名没有关联,有关联的是配置文件。setter getter 匹配的是方法名
      

  4.   

    6楼说的很对,对于spring的依赖注入和你的属性名称没一点关系它是根据你的写方法也就是set方法的名称
    例如你类中有个属性private String name;
     public void setMyName(String name) {
      this.name = name;
    }可以看到属性和它的写方法并不是按照常规那样去定义,如果你spring配置文件中有id名称为myName的话它会通过反射调用setMyName方法将bean注入进去,这时候实际上你name属性就有值了,可以看出来spring的注入和你的属性名称没任何关系它和你的写方法的名称有关系。
    但是通常情况我们都会以属性的名称去定义生成读和写方法,很少会看到读和写方法与属性名称不一致的吧。也不建议那样做啊,
      

  5.   

    spring注入的setter()方法,跟成员变量没有关系,不过为了统一规范,setter()方法的定义是set+成员变量名(首字母大写)
      

  6.   

    LZ我之前也很好奇这个命名规则问题,今天去试了一下(spring3.0),如果定义String类型的username
    配置了XML如下:<property name="username" value="abcde"></property>Bean里面的变量定义:private String uname;
    public void setusername(String str) {
          this.uname= str;
    }上述这样代码能完成依赖注入,可见Bean属性名和set方法名没有关联,唯一相关的是spring里面property name的配置,必须和set名字是想匹配的。
    如果:<property name="username" value="abcde"></property>,那么Bean中setter的命名可以是setUsername()或者是setusername()。
    当然这个例子是极端的,只是想说明依赖注入的过程,最好是按照JAVA的命名规则来,setXxx()这样方式,属性名字最好和spring配置的中的属性一致,这是好的编程习惯。
      

  7.   

    强制的会自动调用set然后 属性第一个字母大写