zoukankan      html  css  js  c++  java
  • Spring框架概述

    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的“广泛定义”。

  • 相关阅读:
    Linux 系统监控和诊断工具:lsof
    C语言基础(21)-C语言编译过程及GCC参数简介
    VS2013-解决VS2013 4996错误
    C语言基础(20)-文件操作(fopen,getc,fclose)
    eclipse-Java compiler level does not match the version of the installed Java project facet.
    C语言基础(19)-结构体,联合体,枚举和typedef
    android studio- Gradle "xxx" project refresh failed
    C语言基础(18)-内存
    C语言基础(17)-作用域
    android.app.Service-android:process=":remote"属性解说
  • 原文地址:https://www.cnblogs.com/houkai/p/4691404.html
Copyright © 2011-2022 走看看