Java Bean 和 Spring Bean 的区别

Java Bean是什么?简而言之,是一种定义java class的规范,这个class中的field是private,任何读写都是通过 set和get实现,且set get必然是public。

如果java bean 这么定义,那么我们可以想象Java bean的用途应该更多的作为一种数据结构,本身不应该具备什么业务功能,那么如果要发挥作用,必然只能借助于其他类,所以java bean 本身的作用更多的应该是提供数据结构,而不是提供业务计算。

       从另一个角度讲,java本身有一个内省库,其中有一个类叫做Introspector,该类提供一个方法getBeanInfo,可以获取java bean的信息,返回值为BeanInfo,而BeanInfo又可以通过方法getPropertyDescriptors获取java bean所有属性(成员变量)的描述信息。PropertyDescriptor有两个代表方法:getReadMethod和getWriteMethod,从此可以反向看出java bean的定义是合理的。

       那么如果我们定义了一个java class 部分属性符合规范,部分不符合规范,那么还可以叫做java bean吗?

举个例子,如下图代码:

执行结果如下图:

那么可以据此得到结论,虽然BeanTest不是一个规范的java bean,但是实际执行的时候是没有任何影响的,只不过我们根据java bean的规范,只能访问到规范的属性,不规范的属性则无法访问。因此如果java class不是规范的java bean,那么我们在使用针对java bean的一些机制时,就要留心。

 

       Spring Bean是什么?这个比较好定义,任何可以被spring 容器创建实例的java class都可以叫做spring bean。

熟悉spring的都知道spring容器是一种托管机制,也就是说java class的生命周期只要可以被spring容器托管就认为是spring bean。显然spring bean是spring框架机制的一部分,和java bean的通用规范是不同的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值