zoukankan      html  css  js  c++  java
  • spring框架:(一) 技术说明(技术介绍,技术优势以及发展史等)

    1.1、什么是spring

    Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架 分层:三层体系结构,为每一个层都提供解决方案 web层:struts2、spring-mvc service层:spring dao层:hibernate(全ORM类型的框架, SQLà HQL,学习成本大)、mybatis(半ORM类型的框架,SQL,学习成本基本不需要)、jdbcTemplate(spring) 轻量级:使用时占用资源少,依赖程序少。比较:EJB(它是第一个为了解决企业级项目开发而产出的一个框架)
    在这里插入图片描述

    1.2、spring由来(发展历程)

    1997年IBM提出了EJB(Enterprise JavaBean)的思想1998年,SUM公司制定开发标准规范EJB1.01999年,EJB1.1发布2001年,EJB2.0发布2003年,EJB2.1发布2006年,EJB3.0发布 Rod Johnson(Spring 之父:罗宾·约翰逊)Expert One-to-One J2EE Design and Development(2002) 阐诉了J2EE使用EJB开发设计的优缺点及解决方案 Expert One-to-One J2EE Development without EJB(2004) 阐诉了J2EE开发不使用EJB的解决方式(Spring雏形)2017年9月发布了spring的最新版本spring5.0通用版(GA) EJB最初的设计思想考虑的是为分布式的应用服务的,分布式是针对大型应用构造的跨平台的协作计算,EJB最初的目的就是为这种计算服务的。但是软件发展到目前为止,大多数应用不需要采用分布式的解决方案,因此用EJB显得太臃肿了。Spring的出现恰恰为了解决这个问题。举个例子来说,EJB就是导弹,专门设计为打高空飞机。但是现在发现飞机不多。于是将它用来对付步兵,这个实在太糟糕了。这个时候有人发明了狙击步枪(Spring),发现对付步兵太好用了。Spring框架是一个广受欢迎的但是非标准的开源框架。它主要由Interface21公司开发和控制。Spring框架的体系结构是基于注射依赖(DI)模式。Spring框架使用了大量的XML配置文件,它可以独立应用,或者在现有的应用服务器上工作。这两个框架有着一个共同的核心设计理念:它们的目标是为松耦合的POJO类提供中间件服务。框架通过在运行时截取执行环境,或将服务对象注射给POJO类的方式,将应用服务和POJO类“连接”起来。POJO类本身并不关注如何“连接”,而且也很少依赖于框架。这样,开发者可以将注意力集中在业务逻辑上,可以对他们的POJO类进行与框架无关的单元测试。并且,由于POJO类不需要继承框架的类或实现框架提供的接口,开发者可以在更加灵活性的基础上构建继承体系,和搭建应用。

    1.3、spring核心

    以IoC(Inverse of Control控制反转)和AOP(Aspect Oriented Programming 面向切面编程)为内核。

    1.4、spring优点

    1.方便解耦,简化开发 (易扩展,易维护,一次编写,到处运行)。
    2.Spring就是一个大工厂(SpringIOC容器),可以将所有对象创建和依赖关系维护,交给Spring管理。
    3. Spring的依赖注入特性使Bean与Bean之间的依赖关系变的完全透明,降低了耦合度:使用SpringIOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑l AOP编程的支持。
    4. Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
    5. 它的面向切面编程特性允许将一些通用任务如安全、事务、日志等进行集中式处理l 声明式事务的支持。
    6. 只需要通过配置就可以完成对事务的管理,而无需手动编程, 方便程序的测试。
    7. Spring对Junit4支持,可以通过注解方便的测试Spring程序l 方便集成各种优秀框架。
    8. Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持l 降低JavaEE API的使用难度• Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。

    1.5、spring体系结构

    在这里插入图片描述

    1.核心容器:

    由 spring-beans、spring-core、spring-context 和 spring-expression(Spring Expression Language, SpEL) 4 个模块组成。

    1.spring-beans 和 spring-core 模块是 Spring 框架的核心模块,包含了控制反(Inversion of Cotrol, IOC)和依赖注入(Dependency Injection, DI)。

    2.spring-context 模块构架于核心模块之上,他扩展了 BeanFactory,为她添加了 Bean 生命周期控制、框架事件体系以及资源加载透明化等功能。此外该模块还提供了许多企业级支持,如邮件访问、远程访问、任务调度等,ApplicationContext 是该模块的核心接口,她是 BeanFactory 的超类,与BeanFactory 不同,ApplicationContext 容器实例化后会自动对所有的单实例 Bean 进行实例化与依赖关系的装配,使之处于待用状态。

    3.spring-expression 模块是统一表达式语言(EL)的扩展模块,可以查询、管理运行中的对象,同时也方便的可以调用对象方法、操作数组、集合等。它的语法类似于传统 EL,但提供了额外的功能,最出色的要数函数调用和简单字符串的模板函数。这种语言的特性是基于 Spring 产品的需求而设计,他可以非常方便地同 Spring IOC 进行交互。

    2.AOP 和设备支持:

    由 spring-aop、spring-aspects 和 spring-instrument 3 个模块组成。

    1.spring-aop 是 Spring 的另一个核心模块,是 AOP 主要的实现模块。

    2.spring-aspects 模块集成自 AspectJ 框架,主要是为 Spring AOP 提供多种 AOP 实现方法。

    3.spring-instrument 模块是基于 JAVA SE 中的"java.lang.instrument"进行设计的,应该算是AOP 的一个支援模块,主要作用是在 JVM 启用时,生成一个代理类,程序员通过代理类在运行时修改类的字节,从而改变一个类的功能,实现 AOP 的功能(使用较少,不必过分关注)。

    3.数据访问及集成:

    由 spring-jdbc、spring-tx、spring-orm、spring-jms 和 spring-oxm 5 个模块组成。

    1.spring-jdbc 模块是 Spring 提供的 JDBC 抽象框架的主要实现模块,用于简化 Spring JDBC。

    2.spring-tx 模块是 Spring JDBC 事务控制实现模块。

    3.spring-orm 模块是 ORM 框架支持模块,主要集成 Hibernate, Java Persistence API (JPA) 和
    Java Data Objects (JDO) 用于资源管理、数据访问对象(DAO)的实现和事务策略。

    4.l spring-jms 模块(Java Messaging Service)能够发送和接受信息,自 Spring Framework 4.1以后,他还提供了对 spring-messaging 模块的支撑。

    5.spring-oxm 模块主要提供一个抽象层以支撑 OXM(OXM 是 Object-to-XML-Mapping 的缩写,它是一个 O/M-mapper,将 java 对象映射成 XML 数据,或者将 XML 数据映射成 java 对象),例如:JAXB, Castor, XMLBeans, JiBX 和 XStream 等。

    4.Web:

    由 spring-web、spring-webmvc、spring-websocket 和 spring-webflux 4 个模块组成。

    1.spring-web 模块为 Spring 提供了最基础 Web 支持,主要建立于核心容器之上,通过 Servlet 或者 Listeners 来初始化 IOC 容器,也包含一些与 Web 相关的支持。

    2.spring-webmvc 模 块 众 所 周 知 是 一 个 的 Web-Servlet 模 块 , 实 现 了 Spring MVC(model-view-Controller)的 Web 应用。

    3.spring-websocket 模块主要是与 Web 前端的全双工通讯的协议。(资料缺乏,这是个人理解)。

    4.spring-webflux 是一个新的非堵塞函数式 Reactive Web 框架,可以用来建立异步的,非阻塞,事件驱动的服务,并且扩展性非常好。

    5.报文发送:

    即 spring-messaging 模块。l spring-messaging 是从 Spring4 开始新加入的一个模块,主要职责是为 Spring 框架集成一些基础的报文传送应用。

    6.Test:

    即 spring-test 模块。spring-test 模块主要为测试提供支持的,毕竟在不需要发布(程序)到你的应用服务器或者连接到其他企业设施的情况下能够执行一些集成测试或者其他测试对于任何企业都是非常重要的。

    下一篇:IOC的概念和作用

    辰鬼丫
  • 相关阅读:
    warning: a non-numeric value encountered in line *的解决方法
    给opencart产品页添加额外信息
    3种检测页面是否符合amp标准的方法
    opencart3修改产品页模板没有效果的原因排查
    opencart 3添加pdf文档下载功能
    opencart3属性attribute实现换行等简单html代码
    opencart分类筛选逻辑修改为并且条件
    opencart3产品页调用upc/数量等信息
    opencart3调用三级菜单level 3 sub categories
    点击鼠标出现漂浮字体("自信", "自强", "坚持"...)效果实现
  • 原文地址:https://www.cnblogs.com/Acechengui/p/13635473.html
Copyright © 2011-2022 走看看