POJO
概述
学习一个概念或者术语我一般习惯先从名字入手。
POJO(Plain Old Java Object)从字面上翻译为“简单老式的java对象”或者 “普通java类”
POJO是指:那些没有继承任何类、也没有实现任何接口,更没有被其它框架侵入的Java对象。
POJO规范
所有属性都必须是private
所有外部访问必须通过setter、getter
不能有extend
不能有implments
不能包含预定注解,如@Entity public class Hello
一般来说,只有private的属性和public的getter、setter而且没有其他继承、实现等等乱七八糟功能的就是POJO。

举个例子

public class POJO {
 // 私有属性
 private String value;
 // 提供公开getter、setter
 public String getValue() {
 return value;
 }
 public void setValue(String value) {
 this.value = value;
 }
 }


总结
阿里Java开发手册中这样说的

  1. POJO(Plain Ordinary Java Object): 在本手册中,POJO专指只有setter / getter / toString的简单类,包括DO/DTO/BO/VO等。

很清晰明了,但是这个toString是阿里为了开发方便强制规定的,并不是POJO的定义。所以我们根据以上的分析,可以总结一下

POJO是一个简单的、普通Java对象,特点是有private的属性和public的getter、setter,除此之外不具有任何特殊角色,不继承或不实现任何其它Java框架的类或接口。

JavaBean
学习一个概念或者术语我一般习惯先从名字入手。

Java是咖啡的意思,而Bean是咖啡豆,意思就很明显了,咖啡豆是咖啡的基础,所以Bean也就是Java的基础组件的意思。

JavaBean 是一种JAVA语言写成的可重用组件。JavaBean符合一定规范编写的Java类,不是一种技术,而是一种规范。它的方法命名,构造及行为必须符合特定的约定:

所有属性为private。
这个类必须具有一个公共的(public)无参构造函数
private属性必须提供public的getter和setter来给外部访问,并且方法的命名也必须遵循一定的命名规范。 。
这个类应是可序列化的,要实现serializable接口。
举个例子:

public class JavaBean implements java.io.Serializable {
 // 实现serializable接口。
 private static final long serialVersionUID = 1L;
 // 私有属性
 private String value;
 //无参构造器
 public JavaBean () {
 }
// 提供公开getter、setter
public String getValue () { 
    return value; 
}
public void setValue (String value) { 
    this.value = value; 
}
// JavaBean可以有其它的方法 
public void hello() { 
    System.out.println("hello"); 
}

}
POJO与JavaBean两者有什么区别
简单说:POJO按照JavaBean的规则来,就可以变成JavaBean。

或者说,当一个POJO可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,他就是一个JavaBean。

SpringBean
在最早的版本中,Spring是被设计用来管理JavaBean的,所以Spring管理的对象会被称为“bean”。当然,现在Spring已经可以管理任何对象,即使它不具备默认构造器和设置方法(getter和setter)这些JavaBean的特性。不过“Spring bean”这个术语仍然被保存了下来。

什么是SpringBean
引用《Spring实战》(Spring in action) 中的一句话:

在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后该bean就可以使用了。一旦该bean不再被使用,则由Java自动进行垃圾回收。相比之下,Spring 容器中的 bean 的生命周期就显得相对复杂多了。

简单的说:SpringBean是受Spring管理的对象。所有能受Spring容器管理的对象,都可以成为SpringBean。

Spring中如何创建Bean
SpringBean的知识点很多,这里只是简单介绍。不详谈

传统的的Javabean,如果我们要创建一个 Bean,我们就要使用关键字 New。

但是,在 Spring 中,Bean 的创建是由 Spring 容器进行的,也就是说,在 Spring 中使用 Bean 的时候,不是由关键字 New 来创建实例了。

Spring中Bean装配方式:

自动装配
使用 XML 装配
使用 Java 装配
Spring Bean与JavaBean区别
规范:
Spring容器对Bean 没有特殊要求,不像JavaBean 一样遵循一些规范(不过对于通过设值方法注入的Bean,一定要提供setter 方法。)

用处:
传统Javabean更多地作为值传递参数,而spring中的bean用处几乎无处不在,任何组件都可以被称为bean。
生命周期:
在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后该bean就可以使用了。一旦该bean不再被使用,则由Java自动进行垃圾回收
Spring中的Bean由Spring容器管理其生命周期行为,较为复杂,这里不详细说明。