这之前从未听说过Spring Bean,今天因为学习的<Java核心36讲>其中一篇涉及到了这个内容,因自己基础薄弱,杨晓峰老师讲的内容需要一定的基础才能看懂,故在网上搜罗一些我能理解的关于Spring Bean的知识点在此记录下来。下面的知识点都是散乱的,仅做学习笔记。

1.    JavaBean中的Bean是啥?

当初在开发Java语言的时候,就是不知道该取什么名字。
后来,在程序员中,他们经常喝一种咖啡, 叫“爪洼”(音译),就取名为JAVA。
这种咖啡,是用“爪洼豆”磨出来的。所以,他们给用“豆”来命名。就是BEAN。

豆子的意思

可以了解为类

2.    Java为什么要用JavaBean?

为什么传值,非得get,set这样来进行。
直接classA.intA这样用不好的地方是什么?

有个特别的比喻(我觉得特别形象)

那样的话就不是封装了, 也就违背了java(面向对象)的本质了。 这好比一个人, 内脏器官是人的属性, 你只能通过人体外部的表象去看这人的那个器官有问题, 而不能直接把内脏取出来。

JAVABEAN 就是自定义的对象!数据存取都很方便和规范
用CLASSA这种表现的,1是不专业 2凌乱

javabean中的setter AND  getter  就好像 你人一样  ,万物皆对象。。。。人的外貌是  属性
人的动作和行为  就是  JAVABEAN中的 方法 ;

这样做的话,在这个类中对其自身的属性有更高的可控性,比如在使用 setName 时,除了 this.name = name; 之外,还可以做一些其他的事情。如果直接把 name 属性给 public 了,那么就没有任何可控性了。

3.    Spring Bean

最好 JavaBean, Spring bean 和 POJO 一起来讨论

JavaBean, Spring bean 和 POJO 是三个被广泛使用的术语,我们来看看它们的含义,以及分析三者的区别。

JavaBeans

根本而言,JavaBean只是遵循了特定编码规范的Java类而已。

1)    包含默认的(无参数)的构造函数

2)    允许通过访问器来访问类的成员属性

3)    实现java.io.Serializable接口

准确来说,JavaBean是遵循了Sun制定的JavaBean标准的类,该标准早于1996年发布。JavaBean被定义为Java的“软件组件模型”。最初的想法是将JavaBean打造成能够被构建工具可视化操作的可重用的组件,由此,软件供应商可以创建和出售能够让用户灵活的组合进应用程序的JavaBean.它的三个重要特征是:

1)    它暴露一系列属性

2)    它允许其他组件调用一系列方法

3)    它触发的一系列事件(用来通知它注册了的监听器)

POJO

POJO是 Plain Old Java Object(简单的Java对象)的缩写。它最初是由Martin Fowler等人创造的,作为一种花式的对普通Java对象的称呼。这类对象不需要通过框架来使用,也不需要在特定应用服务器的环境下才能运行。这个词主要用来区分简单、轻量的Java对象和“重量级“的类,例如EJB。《POJOs in Action》一书介绍了使用这类轻量的对象来进行开发的方法,许多框架-例如Spring-也推广了POJO的使用。

Spring beans

Spring bea表示受Spring管理的对象。具体来说,它是被Spring框架容器初始化、配置和管理的对象。Spring bean是在Spring的配置文件中定义(现在也可以通过annotation注解来定义),在Spring容器中初始化,然后注入到应用程序中的。

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

Spring bean可以是POJO吗。当然可以,并且它通常就是。(即使它并不一定得是POJO,例如Spring可以用来处理重量级Java对象,比如EJB对象)。

总结

虽然距离JavaBean规范的发表已经过了十多年,这个规范仍然有重要的作用,并且影响着现代框架–如Spring–的开发。然而,虽然我们仍然可以称这些包含默认构造器和私有字段的访问方法的类为JavaBean,它的“可以被构建工具可视化地管理的可重用组件”的概念已经不再流行了。

而另一方面,POJO已经无处不在了,人们对EJB的复杂性的积怨使得“轻量的”Java编程获得了广泛采用。

Spring bean是由Spring框架创建和管理的对象。

这三个概念并不是互斥的。一个Java对象可以同时是JavaBean,POJO和Spring bean。

对Spring Bean了解一二的更多相关文章

  1. Spring8:一些常用的Spring Bean扩展接口

    前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...

  2. Spring Bean详细讲解

    什么是Bean? Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象. Spring 容器会自动完成@bean对象的实例化. 创建应用对象之间的协作关系的行为称为:装配( ...

  3. Spring Bean的生命周期(非常详细)

    Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring ...

  4. spring bean的生命周期

    掌握好spring bean的生命周期,对spring的扩展大有帮助.  spring bean的生命周期(推荐看)  spring bean的生命周期

  5. spring bean的重新加载

    架构体系 在谈spring bean的重新加载前,首先我们来看看spring ioc容器. spring ioc容器主要功能是完成对bean的创建.依赖注入和管理等功能,而这些功能的实现是有下面几个组 ...

  6. Spring Bean

    一.Spring的几大模块:Data access & Integration.Transcation.Instrumentation.Core Spring Container.Testin ...

  7. 【转】Spring bean处理——回调函数

    Spring bean处理——回调函数 Spring中定义了三个可以用来对Spring bean或生成bean的BeanFactory进行处理的接口,InitializingBean.BeanPost ...

  8. 在非spring组件中注入spring bean

    1.在spring中配置如下<context:spring-configured/>     <context:load-time-weaver aspectj-weaving=&q ...

  9. spring bean生命周期管理--转

    Life Cycle Management of a Spring Bean 原文地址:http://javabeat.net/life-cycle-management-of-a-spring-be ...

随机推荐

  1. Python 处理输入输出

    sys.stdin.read() 用于接收标准输入,也就是让用户通过键盘进行输入sys.stdout.write() 用于打印标准输出,也就是把输入的数据输出到屏幕sys.stderr.write() ...

  2. c++11 数值类型和字符串的相互转换

    string和数值类型转换 c++11提供了to_string方法,可以方便的将各种数值类型转换为 字符串类型: std::string to_string(int value); std::stri ...

  3. C、C++编程入口,常见的编程题

    1.设计一个从5个数中取最小数和最大数的程序. 2.#include<stdio.h> 3.int min(int a[],int i); 4.int max(int a[],int i) ...

  4. LeetCode——Rectangle Area

    Description:https://leetcode.com/problems/rectangle-area/ public class Solution { public int compute ...

  5. 微信小程序 --- 绘画

    cavans及context详解 绘画API的使用 游戏的制作

  6. 边的双联通+缩点+LCA(HDU3686)

    Traffic Real Time Query System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  7. 模拟退火算法A Star not a Tree?(poj2420)

    http://write.blog.csdn.net/postedit A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Tot ...

  8. 前端模拟(mock)接口数据(koa)

    在前后端分离开发项目时,经常会有前后端进度不一致,可能前端界面开发已经完成,就等接口了,如果等接口出来再联调的话时间可能会来不及. 这个时候,前端就可以根据制定好的接口规范和接口文档来mock接口数据 ...

  9. postgresql----字符串函数与操作符

    函数 返回值类型 描述 示例 结果 string||string text 字符串连接 select 'Post'||'gresql'||' good!'; Postgresql good! stri ...

  10. 【转载】排查Linux机器是否已经被入侵

          背景信息:以下情况是在CentOS 6.9的系统中查看的,其它Linux发行版类似 1.入侵者可能会删除机器的日志信息,可以查看日志信息是否还存在或者是否被清空,相关命令示例: [root ...