• spring概述(一)


    1、什么是spring

      spring是一个开源的轻量级JavaSE、JavaEE开发应用框架,其目的是简化企业级应用开发。

    2、spring给我们带来什么

    • 方便解耦,简化开发。

       通过sping提供的IOC容器,用户可以将对象之间的依赖关系交由spring控制,避免硬编码所造成的过度程序耦合。

    • AOP编程的支持。

       通过spring提供的AOP功能,方便进行面向切面编程,很多不容易用传统OOP实现的功能可以通过AOP轻松应对。

    • 声明式事务支持。

       在spring中,用户可以从单调烦闷的事务管理代码中解脱出来,通过声明的方式灵活地进行事务管理,提高开发效率和质量。

    • 单元测试方便。

         可以用非容器依赖的的编程方式进行几乎所有的测试工作。

    • 方便集成各种优秀开源框架。

       spring不排斥各种优秀的开源框架,相反,spring可以降低各种框架的使用难度,提供了对各种优秀框架(如Struts,hibernate,hessian,quartz等)的直接支持。

    • 降低JavaEE API开发的使用难度。

       spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄层封装,通过spring的简易封装,这些Java EE API使用难度大大降低。

    • spring源码是经典的学习范例。

       spring源码设计精妙,结构清晰,是Java技术的最佳实践范例。

    3、为什么需要spring

      相关概念:

        应用程序:是能完成我们需要的功能的成品,比如购物网站、OA系统。

        框架:是完成一定功能的半成品,比如我们可以使用框架进行购物网站的开发;框架做一部分功能我们自己做一部分功能,这样程序就创建出来了。而且框架规定了你在开发过程中

           的整体架构。

        非入侵式设计:从框架角度可以这样理解,无需集成框架提供的类,这种设计就可以看做是非入侵式设计,如果继承了这些框架类,就是侵入设计。

        轻量级重量级:轻量级是相对于重量级而言的,轻量级的一般就是非入侵的、所依赖的东西非常少、占用资源少、部署简单,而重量级恰恰相反。

        POJO:简单的Java对象,它可包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其他Java框架的类或接口。

        容器:在日常生活中容器就是一种盛放东西的器具,从程序设计角度看就是装对象的对象,因为存在放入、拿出操作,所以容器还要管理对象的生命周期。

        控制反转:控制反转还有一个名字叫做依赖注入,就是由容器控制程序之间的关系,而非传统实现中由程序代码直接控制。

        Bean:一般指容器管理的对象,在spring中指的是spring IOC容器管理的对象。

      理由:

        非常轻量级的容器

        AOP

        简单的数据库事务管理

        JDBC抽象及ORM框架支持

        灵活的Web层支持

        简化各种技术集成

    4、sping的体系结构

      spirng核心框架由4000多个类组成,整个框架按照其所属功能可以划分为如下图所示主要模块:

      

      核心容器:包括Core、Beans、Context、EL

    • Core 模块:封装了框架依赖的最底层部分,包括资源访问、类型转换及一些常用的工具类。
    • Beans模块:提供了框架的基础部分,包括反转控制和依赖注入。其中BeanFactory是核心容器,本质是“工厂设计模式”的实现,而且无需编程实现“单例设计模式” ,单例完全由容

              器控制,而且提倡面向接口编程,而非面向对象编程;所有应用程序对象及对象之间的关系由框架管理。

    • Context模块:以Core和Beans为基础,集成Beans模块功能并添加资源绑定、数据验证、国际化、JavaEE支持、容器生命周期、事件传播等;核心接口是ApplicationContext
    • EL模块:提供强大的表达式语言支持,支持访问和修改属性,方法调用,支持访问及修改数组、容器和索引器,支持从spring容器获取Bean。

      AOP、Aspects模块:

    • AOP模块:spring AOP提供了符合AOP Alliance规范的面向切面的编程实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态的将这些功能添

            加到需要的代码中。

    • Aspects模块:提供了对AspectJ的集成,AspectJ提供了比spring asp更强大的功能。

      数据访问集成模块: 

    • 事务模块:该模块用于spring的事务管理,只要是spring管理对象都能得到spring管理事务的好处,无需再代码中进行事务控制了,而且支持编程和声明式事务管理。
    • JDBC模块:提供了一个JDBC的样例模板,使用这些模板能消除冗长的JDBC编码还有必须的事务控制,且能享受到spring控制事务的好处。
    • ORM模块:提供与流行的“对象-关系”映射框架的无缝集成,包括hibernate、mybatis等。
    • OMX模块:提供了一个对Object/xml映射实现。
    • JMS模块:用于JMS,提供一套“消息生产者,消息消费者”模板用于更加简单的使用JMS,JMS用于两个应用程序之间或分布式系统中发送消息,进行异步通信。

      Web/Remoting模块:

    • web模块:提供了基础的web功能。例如多文件上传,集成IOC容器、远程过程访问(RMI、Hessian、Burlap)、以及WebService支持,并提供一个RestTemplate类来提供

            方便的RESTful访问。

    • web-servlet:提供了一个SpringMVC web框架实现。SpringMVC框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的JSP标签。
    • web-struts模块:提供了与Struts的无缝集成。

      Test模块:

      spring支持Junit和TestNG测试框架,而且还提供了一些基于spring的测试功能,比如在测试web框架时,模拟http请求的功能。

    5、典型应用场景:

      spring可以应用到许多场景,最简单的JavaSE程序到企业级应用程序都能使用spring来构建。

    • 典型的web应用场景:

      

       典型的三层应用架构:数据模型层实现域对象;数据访问层实现数据访问;逻辑层实现业务逻辑;web层提供页面展示;所有这些层组件都由spring进行管理,享受到spring事务管

       理、AOP等好处,而且唯一的入口就是DispatchServlet,它通过把请求映射为响应的web层组件来实现响应请求功能。

    • 远程访问场景:

       spring能非常方便的提供暴露RMI服务,远程访问服务如Hessian、Burlap等,实现非常简单只需通过在spring中配置响应的地址及需暴露的服务即可轻松实现。

    • EJB应用场景:

       spring也可以与EJB轻松集成。

    6、对Java版本的要求

      spring4.x基于Java6.0,全面支持Java8.0。运行spring4.x必须使用java6.0以上版本,推荐使用Java8.0及以上版本。

    7、spring4.x新特性

    • 全面支持Java8.0
    • 核心容器增强
    • 支持Groovy定义Bean
    • Web增强
    • 支持WebSocket
    • 测试增强

        

        

  • 相关阅读:
    hdu 2639 Bone Collector II
    文件打包bundle
    iOS UITextField垂直居中
    Mac删除废纸篓中的单一文件和文件夹
    Swift 初见
    关于 Swift
    NSString和NSDate的转换
    iOS开发之iOS7设置状态栏字体颜色
    在当前界面中隐藏状态栏
    适合所有测试人员读的书籍
  • 原文地址:https://www.cnblogs.com/ouhouki/p/9674774.html
Copyright © 2020-2023  润新知