Spring是最流行的Java企业级应用开发框架,全球数以百万的开发者在使用Spring框架创建高性能、易测试、可重用的代码。

Spring框架的核心特性可以应用于任何Java应用,但扩展的JavaEE平台上可以构建Web应用。Spring框架的目标是通过POJO编程模型,使J2EE的开发更容易,促进良好的编程实践。

POJO(Plain Old Java Object),是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。所以下面的代码被认为是POJO了。

public class DbHello implements Hello {
  private DictionaryDAO dao;
  public void setDao(DictionaryDAO dao) {
  this.dao = dao;
  }
}

其实这样认为是有问题的。这是一个不同时期发展而产生的概念:

JavaBean -->POJO ---> EJB 2 ---> Spring ---->EJB3/Spring

这是大致的历史路程,JavaBean 1.00-A规范在96年12月份被Sun公司发布,JavaBean规范定义了软件组件模型。尽管JavaBean为定义可重用的应用组件而设计,但是它们看似太简单了,以至于不能胜任任何“实际的”工作,企业级开发者的需求并未得到满足。

复杂的应用需要诸如事务管理、安全、分布式计算此类的服务,但是JavaBean规范并未直接提供。所以98年3月,Sun公司发布了EJB 1.0规范,该规范把Java组件的设计理念延伸到了服务器端,并提供了许多必需的企业级服务,但它不再像JavaBean规范那么简单了,事实上,除了名字,EJB Bean和JavaBean已经没有任何关系了。

尽管很多成功的系统是基于EJB构建的,但是EJB从未实现它的初衷:简化企业级应用的开发。EJB的声明式编程简化了基础框架层面的开发,如事务和安全;但是另一方面EJB在配套代码实现和部署描述符等方面变得异常复杂。

随着时间的推移,人们开始寻找更简单的方法,Java组件设计理念重新回到正轨。此时相对于EJB Bean有了新的概念:POJO,一个简单的普通的Java对象,不继承或不实现任何其它Java框架的类或接口。

POJO后来延伸为一种非侵入性代名词,也就是说:选择技术框架或开发框架,不能让别人基于你框架开发的JavaBean依赖你的框架,要实现这种目的,需要通过DI依赖注入 AOP等等技术才能实现。

客观的说EJB的发展促进了基于POJO的编程模型,引入AOP和DI等新的理念,最新的EJB规范相比之前有了前所未有的简化,但是对许多开发者而言,改变来得太迟了。到了EJB3发布的时候,其他基于POJO的开发框架在Java社区已经成为事实标准。

Spring框架已经成为基于POJO的轻量级开发框架的领导者。

JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:

  1. 这个类必须有一个公共的缺省构造函数。
  2. 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。
  3. 这个类应是可序列化的。

Spring用Bean或JavaBean表示应用组件,但这并不意味着Spring组件必须遵循JavaBean规范。一个Spring组件可以使任何形式的POJO。POJO可以视作JavaBean的“广泛定义”。

Spring框架概述的更多相关文章

  1. 1.Spring 框架概述

    目录 Spring 框架概述 1 我们所说的 "Spring "是什么意思 2. Spring和Spring框架的历史 3. 设计理念 4.反馈和贡献 5.开始使用 Spring ...

  2. Spring 框架概述

    ◆简介 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 Spring 框架是一个分层架构,由 7 个定义良好的模块组成. ...

  3. Spring框架介绍及使用

    Spring框架—控制反转(IOC)1 Spring框架概述1.1 什么是Spring1.2 Spring的优点1.3 Spring的体系结构2 入门案例:(IoC)2.1导入jar包2.2目标类2. ...

  4. Spring 框架(一)

    1 spring框架概述 1.1 什么是spring l Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert ...

  5. spring框架入门day01

    struts:web层,比较简单(ValueStack值栈,拦截器) hibernate:dao层,知识点杂 spring:service层,重要,讲多少用多少  --> [了解] spring ...

  6. Java匹马行天下之J2EE框架开发——Spring—>Spring框架知多少

    ————也许我注定成不了一个伟大的人,但是至少我可以做一个很棒的自己.我想我现在应该做的不是瞻前顾后,而是活在当下,正确认知自己,做好自己现在的工作,努力提升自己的能力,踏踏实实地做一个程序员 一.思 ...

  7. Spring框架介绍及使用(转载)

    原文链接 Spring框架—控制反转(IOC) 1 Spring框架概述1.1 什么是SpringSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod ...

  8. Spring框架详解介绍-基本使用方法

    1.Spring框架-控制反转(IOC) 2.Spring框架-面向切面编程(AOP) 3.Spring 内置的JdbcTemplate(Spring-JDBC) Spring框架-控制反转(IOC) ...

  9. Spring 框架介绍 [Spring 优点][Spring 应用领域][体系结构][目录结构][基础 jar 包]

    您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 目录 ...

随机推荐

  1. javascript的api设计原则

    前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...

  2. Ajax 概念 分析 举例

    Ajax是结合了访问数据库,数据访问,Jquery 可以做页面局部刷新或者说是页面不刷新,我可以让页面不刷新,仅仅是数据的刷新,没有频繁的刷页面,是现在比较常用的一种方式做页面那么它是怎么实现页面无刷 ...

  3. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用

    再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下, ...

  4. 【开源】分享2011-2015年全国城市历史天气数据库【Sqlite+C#访问程序】

    由于个人研究需要,需要采集天气历史数据,前一篇文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子),介绍了基本的采集思路和核心代码,经过1个星期的采集,历史数据库 ...

  5. [转]Patch文件结构详解

    N久不来 于是不知道扔在哪儿于是放这里先 如果你觉得碍事的话 帮我扔到合适的版块去.. 导读这是一篇说明文 它介绍了标准冒险岛更新文件(*.patch;*.exe)的格式文章的最后附了一段C#的参考代 ...

  6. .NET Core 2016 回顾

    都在回顾自己的2016,今天我们来看看.NET Core的2016. 每一年的脚步的确是快,转眼间马上就2017.新的一年,带着理想和抱负继续出发. 1 月 ASP.NET 5 改名 ASP.NET ...

  7. exp/imp 与 expdp/impdp 区别

    在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用exp的时候往往是需要好几个小时,耗费大量时间.oracle10g以后可以用expdp来导出数据库花费的时间要远小于exp花费的时间,而且文件也 ...

  8. requests源码阅读学习笔记

    0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...

  9. Hbase安装和错误

    集群规划情况: djt1 active Hmaster djt2 standby Hmaster djt3 HRegionServer 搭建步骤: 第一步:配置conf/regionservers d ...

  10. mono for android学习过程系列教程(3)

    服务 接着上一讲的内容,咱们继续来唠叨概念性的东西.服务,内容提供器,广播接收器等理论知识. 首先是服务,它不是一个可视化的组件或者视图.他是由我们开发人员来定义,可以一直一直运行 的工作单元.跟活动 ...