Java 中经常听到和用到 Bean, 你能说清楚 Bean 这个概念吗? 如果不能, 本文可以帮你解惑. 不是特别准确的划分的话, Java 中有两类 Bean:JavaBean 和 Spring 中的 Bean.
JavaBean
JavaBean 比较好理解, 因为它是有标准的(可以点击 这里 从 oracle 官方下载 specification), 有兴趣的可以阅读一下, 内容还挺多的. 简单来说, 这个标准规定了符合以下四个条件的 Java 类就称之为 JavaBean:
必须 实现了 Serializable 或 Externalizable , 即 JavaBean 必须是可序列化的;
必须 包含一个 public 的无参构造函数;
所有类的属性 必须 要有对应的 public 的 get 和 set 方法;
所有类属性 应该 是私有的.
这就是 JavaBean 的规范要求, 其实比较简单, 就是一个概念定义. 这里还要提一下的就是 Java 中的 POJO(Plain and Old Java Object), 这个概念没有什么标准, 属于约定俗成的概念, 比较简单的 Java 类就可以称之为 POJO, 至于简单的界限是什么, 没有明确的标准. 一般 JavaBean 都属于 POJO, 但 POJO 未必是 JavaBean.
Spring Bean
在 Spring 中, 不夸张的说, 一切都可以是 Bean(当然还是有点夸张了). 但用过 Spring 的人都知道, 如果按照 JavaBean 的规范看的话, Spring 中的 Bean 大多不算是 JavaBean, 至少很少有人会实现序列化. 所以, 在 Spring 中, Bean 这个概念被扩大化了, Spring 中的 Bean 更像是 POJO. 官方的解释如下:
In Spring, the objects that form the Backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container. Otherwise, a bean is simply one of many objects in your application. Beans, and the dependencies among them, are reflected in the configuration metadata used by a container.
简单说: 在 Spring 中, 被 Spring 容器管理的那些类 (对象) 都是(Spring)Bean .
来源: http://www.tuicool.com/articles/Fbuyy2b