• Spring学习【Spring概述】


           从本文開始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架。

    当中採用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是非常值得学习与使用的。以下我们就进入正题。介绍Java平台上的一个优秀的开源应用框架Spring,以及Spring框架的历史和Spring框架相关基本知识。

    【转载使用,请注明出处:http://blog.csdn.net/mahoking


    Spring 介绍

           Spring是Java平台上的一个开源应用框架。

    它的第一个版本号是由Rod Johnson写出来的。Rod在他的“Expert One-On- One Java EE Design and Development(Java企业应用设计与开发的专家一对一)”一书中首次公布了这个框架。

    Rod进一步拓展了他的代码。以阐述“怎样让应用程序能以超出当时大众所惯于接受的易用性和稳定性与J2EE平台上的不同组件合作”的观点。


           Spring的框架首次在2003年6月的Apache 2.0的使用许可中公布。第一个具有里程碑意义的版本号是2004年3月公布的1.0。2004年9月和2005年3月先后又有重要的版本号面世。
           Spring 框架本身并没有强制实行不论什么特别的编程模式。在Java社区里,Spring作为EJB模型之外的另外一个选择甚至是替代品而广为流行。从设计上看,Spring给予了Java程序猿很多的自由度,但同一时候对业界常见的问题也提供了良好的文档和易于使用的方法。
           Spring框架的核心功能在不论什么Java应用中都是适用的。在基于Java企业平台上的web应用中,大量的拓展和改进得以形成。为此,Spring获得了广泛的欢迎,并被很多公司认可为具有战略意义的重要框架。


    Spring框架的主要功能 

    • 基于Java Beans的配置管理,採用IOC的原理,特别是对依赖注射技术的使用。这些都用来降低各组件间对实施细则的相互依赖性。 
    • 一个核心的,全局适用的bean工厂 。

    • 一个一般抽象化的层面来管理数据库间的数据处理。 
    • 建立在框架内的,对Java数据处理API和单独的JDBC数据源的一般性策略。

      因此,在数据处理支持上对Java企业版本号环境的依赖性得以消除。 

    • 和一些可持续性的框架,如Hibernate,JDO,iBATIS和db4o的整合 。

    • web应用中的MVC框架。基于核心的Spring功能。支持多种产生视图的技术。包含JSP,FreeMarker,Velocity。Tiles,iText,和POI 。

    • 大量的AOP框架以提供诸如数据处理管理的服务。同IOC的功能一样,目的是提高系统的模块化程度。


    Spring框架涉及的相关概念
           Spring使用主要的JavaBean来完毕曾经仅仅可能由EJB完毕的事情。然而,Spring的用途不仅限于server端的开发。从简单性、可測试性和松耦合的角度而言,不论什么Java应用都能够从Spring中受益。


           Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
           轻量——从大小与开销双方面而言Spring都是轻量的。

    完整的Spring框架能够在一个大小仅仅有1MB多的JAR文件中公布。而且Spring所需的处理开销也是微不足道的。此外。Spring是非侵入式的:典型地。Spring应用中的对象不依赖于Spring的特定类。
           控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。

    当应用了IoC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你能够觉得IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
           面向切面——Spring提供了面向切面编程的丰富支持,同意通过分离应用的业务逻辑与系统级服务(比如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象仅仅实现它们应该做的——完毕业务逻辑——仅此而已。

    它们并不负责(甚至是意识)其他的系统级关注点,比如日志或事务支持。
           容器——Spring包括并管理应用对象的配置和生命周期。在这个意义上它是一种容器,你能够配置你的每一个bean怎样被创建——基于一个可配置原型(prototype),你的bean能够创建一个单独的实例或者每次须要时都生成一个新的实例——以及它们是怎样相互关联的。然而。Spring不应该被混同于传统的重量级的EJB容器,它们常常是庞大与笨重的,难以使用。
           框架——Spring能够将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合。典型地是在一个XML文件中。

    Spring也提供了非常多基础功能(事务管理、持久化框架集成等等)。将应用逻辑的开发留给了开发人员。
           全部Spring的这些特征使你可以编写更干净、更可管理、而且更易于測试的代码。它们也为Spring中的各种模块提供了基础支持。




    Spring 框架的七个模块
           Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。

     

           组成 Spring 框架的每一个模块(或组件)都能够单独存在,或者与其它一个或多个模块联合实现。每一个模块的功能例如以下:
           Spring Core(核心容器):核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory。它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
           Spring Context(上下文):Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包含企业服务,比如 JNDI、EJB、电子邮件、国际化、校验和调度功能。


           Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,能够非常easy地使 Spring 框架管理的不论什么对象支持 AOP。

    Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就能够将声明性事务管理集成到应用程序中。


           Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,而且极大地减少了须要编写的异常代码数量(比如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
           Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,当中包含 JDO、Hibernate 和 iBatis SQL Map。

    全部这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
           Spring Web:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求參数绑定到域对象的工作。
           Spring Web MVC :MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口。MVC 框架变成为高度可配置的。MVC 容纳了大量视图技术,当中包含 JSP、Velocity、Tiles、iText 和 POI。

           Spring 框架的功能能够用在不论什么 J2EE server中,大多数功能也适用于不受管理的环境。

    Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据訪问对象。毫无疑问,这种对象能够在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、測试环境之间重用。


    【转载使用,请注明出处:http://blog.csdn.net/mahoking


  • 相关阅读:
    mybatis N+1问题解决
    Best Time to Buy and Sell Stock
    119. Pascal's Triangle II
    HBuilder打包ios
    关于JavaScript/TypeScript中的setTimeout和setInterval
    白色透明渐变css
    AntV 在小程序中的使用
    AntV 在h5页面中的使用
    js处理后端返回超过16位大数字方案(network中preview和response返回不一致)
    m站taro编译css的时候有些属性会被编译掉,如果遇到这个问题,用第一行代码,写到无法编译的代码上面
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6798026.html
Copyright © 2020-2023  润新知