thinking in java 笔记--java bean规则--2008.04.11

2008.04.11 Thinking in java 笔记, 一个纯的java bean的规则.以下只是个人的总结,有不对的地方还请大家指出.

    现在很多的框架语言的配置大都采用java bean类了,包括WebWork,Struts2,Spring,JSF等.那么一个java bean应该有什么样的特点呢.

1.  有一个public,没有参数,的构造方法.

  • public 是因为这个类要被其它的类来调用(多数由框架中的对象工厂来创建一个新的对象),所以这个类必须能被任何其它的类访问,也就只能是public的.
  • 没有参数是因为对象工厂来创建这个bean对象时通常是像下面这样的过程创建的:
    Class c  =   null ;
            Object obj 
    =   null ;
            
    try   {
                c 
    = Class.forName(className);
                obj 
    = c.newInstance();
            }
      catch  (ClassNotFoundException e)  {
                logger.error(
    "error happened when find class :" + className,e);
            }
      catch  (InstantiationException e)  {
                logger.error(
    "error happened when create newInstance :" + className,e);
            }
      catch  (IllegalAccessException e)  {
                logger.error(
    "error happened when create newInstance :" + className,e);
            }
  • className就是.xml配置文件中的<bean-class-name>属性,必须是java类的全名称(包含package的名称),这个方法(newInstance())调用的是没有参数的bean的构造方法,对于某些框架(例如Spring)中的创建bean时可以有参数,是调用的Constructor.newInstance ,这里就不讨论了,个人认为一个纯的java bean对象的构造方法应该是没有参数的,所有的属性(Properties)都应该在对象创建以后通过get,set 方法来进行赋值.

2.  属性(Properties)的命名应该符合java的命名规范,即首个单词的字母应该小写.有相应的set,get方法

  • 每个属性应该是private方法的,这样对属性的操作只能通过其set,get方法(这句话应该不绝对,因为Hibernate的对象与表结构的对应配置时,说即使是private的属性没有public的set 方法也是可以对其赋值的,确切是怎样实现的,还没研究过).,
  • 每个属性有其public 的set,get方法,这样才能使得bean 中的属性可以进行读写操作,创建set,get方法时要注意,属性的名称在set,get方法中的第一个字母要大写的,还有就是属性的名称与set,get后的字段要完全匹配,像这样,
    String methodName  =   " get "
                        
    +  propertyName.substring( 0 1 ).toUpperCase()
                        
    +  propertyName.substring( 1 );
  • 改变属性的名称后,其相应的set,get方法也要修改,不然会使得类中有值,但是在页面上却显示不出来,对于使用Eclipse做为开发工具的朋友来说,可以用"Source"中的"Generate getter and setters" 命令.
  • 有了相应的set,get方法,其它类就可以通过Method中的invoke()方法来对bean的属性进行操作了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值