美文网首页
springframework介绍

springframework介绍

作者: dd299 | 来源:发表于2019-11-26 18:38 被阅读0次

    原文传送门

    犹豫很久,终于鼓起勇气开始梳理spring的体系。

    1. 什么是springframework?

    先来看看wiki的解释

    Spring框架是 Java 平台的一个开源的全栈(Full-stack)应用程序框架和控制反转容器实现,一般被直接称为 Spring。该框架的一些核心功能理论上可用于任何 Java 应用,并且Spring 还为基于Java企业版平台构建的 Web 应用提供了大量的拓展支持。
    

    官方文档的解释更明确些:

    Spring 框架是一个Java平台,它为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此您可以专注于应用程序的开发。Spring可以让您从“plain old Java objects”(POJO)中构建应用程序和通过非侵入性的POJO实现企业应用服务。此功能适用于Java SE的编程模型,全部的或部分的适应Java EE模型。
    

    综上,我们知道spring是springframework的简称,它帮助开发者快速完成开发中的通用步骤,开发者只需要关注与应用开发相关的部分,大大的提高了开发效率。

    Spring能帮我们做什么?

    1. 用简单方法来管理数据库事务
    2. 用本地Java方法来远程调用
    3. 用本地Java方法实现管理操作,来代替JMX APIs
    4. 用本地Java方法实现消息处理,来代替JMS APIs

    2. springframework包括哪些模块

    2.1 框架

    官网上能找到的最早的spring框架图如下
    spring1.1.2框架图

    image

    这就是流传最广的7大模块的出处了。现在spring已经发展到了spring5,模块的划分进行了调整,已经和第一版有些调整了。
    Spring5框架图

    image

    那么我们直接来看新的版本。

    2.2 模块

    在spring5中,Spring框架的功能被有组织的分散到约20个模块中。这些模块分布在核心容器(Core Container,),数据访问/集成(Data Access/Integration),Web,AOP(Aspect Oriented Programming,面向切面 的编程),植入(Instrumentation),消息传输(Messaging)和测试(Test)7个项目中。

    下面对每个模块进行一一介绍(来自官网文档的中文版搬运)

    2.2.1 核心容器Core Container

    spring-corespring-beansspring-contextspring-context-support,和spring-expression(Spring表达式语言)组成。

    1. spring-corespring-beans模块提供了框架的基础功能,包括IOC和依赖注入功能。 BeanFactory是一个成熟的工厂模式的实现。你不再需要编程去实现单例模式,允许你把依赖关系的配置和描述从程序逻辑中解耦。
    2. 上下文(spring-context)模块建立在由Core和Beans模块提供的坚实的基础上:它提供一个框架式的对象访问方式,类似于一个JNDI注册表。上下文模块从Beans模块继承其功能,并添加支持国际化(使用,例如,资源集合),事件传播,资源负载,并且透明创建上下文,例如,Servlet容器。Context模块还支持Java EE的功能,如EJB,JMX和基本的远程处理。ApplicationContext接口是Context模块的焦点。 spring-context-support支持整合普通第三方库到Spring应用程序上下文,特别是用于高速缓存(ehcache,JCache)和调度(CommonJ,Quartz)的支持。
    1. spring-expression模块提供了强大的表达式语言去支持查询和操作运行时对象图。这是对JSP 2.1规范中规定的统一表达式语言(unified EL)的扩展。该语言支持设置和获取属性值,属性分配,方法调用,访问数组,集合和索引器的内容,逻辑和算术运算,变量命名以及从Spring的IoC容器中以名称检索对象。 它还支持列表投影和选择以及常见的列表聚合。

    2.2.2 AOP和Instrumentation

    spring-aop模块提供了一个符合AOP联盟(要求)的面向方面的编程实现,例如,允许您定义方法拦截器和切入点(pointcuts),以便干净地解耦应该被分离的功能实现。 使用源级元数据(source-level metadata)功能,您还可以以类似于.NET属性的方式将行为信息合并到代码中。
    单独的spring-aspects模块,提供了与AspectJ的集成。

    spring-instrument模块提供了类植入(instrumentation)支持和类加载器的实现,可以应用在特定的应用服务器中。该spring-instrument-tomcat 模块包含了支持Tomcat的植入代理。

    2.2.3消息(Messaging)

    Spring框架4包括spring-messaging(消息传递模块),其中包含来自Spring Integration的项目,例如,MessageMessageChannelMessageHandler,和其他用来传输消息的基础应用。该模块还包括一组用于将消息映射到方法的注释(annotations),类似于基于Spring MVC注释的编程模型。

    2.2.4数据访问/集成(Data Access/Integration)

    数据访问/集成层由JDBC,ORM,OXM,JMS和事务模块组成。

    1. spring-jdbc模块提供了一个JDBC –抽象层,消除了需要的繁琐的JDBC编码和数据库厂商特有的错误代码解析。
    2. spring-tx模块支持用于实现特殊接口和所有POJO(普通Java对象)的类的编程和声明式事务 管理。
    3. spring-orm模块为流行的对象关系映射(object-relational mapping )API提供集成层,包括JPA和Hibernate。使用spring-orm模块,您可以将这些O / R映射框架与Spring提供的所有其他功能结合使用,例如前面提到的简单声明性事务管理功能。
    4. spring-oxm模块提供了一个支持对象/ XML映射实现的抽象层,如JAXB,Castor,JiBX和XStream。
    5. spring-jms模块(Java Messaging Service) 包含用于生产和消费消息的功能。自Spring Framework 4.1以来,它提供了与 spring-messaging模块的集成。

    2.2.5 Web

    Web层由spring-webspring-webmvcspring-websocket 模块组成。

    1. spring-web模块提供基本的面向Web的集成功能,例如多部分文件上传功能,以及初始化一个使用了Servlet侦听器和面向Web的应用程序上下文的IoC容器。它还包含一个HTTP客户端和Spring的远程支持的Web相关部分。
    2. spring-webmvc模块(也称为Web-Servlet模块)包含用于Web应用程序的Spring的模型-视图-控制器(MVC)和REST Web Services实现。Spring的MVC框架提供了领域模型代码和Web表单之间的清晰分离,并与Spring Framework的所有其他功能集成。

    2.2.6测试(Test)

    spring-test模块支持使用JUnit或TestNG对Spring组件进行单元测试和 集成测试。它提供了Spring ApplicationContexts的一致加载和这些上下文的缓存。它还提供可用于独立测试代码的模仿(mock)对象。

    2.3 总结

    spring的核心依然是corebeancontext三个组件。它们实现了spring非常核心的功能:依赖注入和控制反转,这个功能可以将对象之间的依赖关系用配置文件管理起来。这三个组件构建起了整个 Spring 的骨骼架构。没有它们就不可能有 AOP、Web 等上层的特性功能。
    后面的文章中,我们会先从这三个模块入手,对spring进行介绍和分析。


    参考文档

    wiki百科
    https://zh.wikipedia.org/wiki/Spring_Framework

    官方文档
    https://docs.spring.io/spring/docs/5.0.0.M5/spring-framework-reference/html/overview.html
    中文版
    https://lfvepclr.gitbooks.io/spring-framework-5-doc-cn/content/2/2.html


    本文链接:https://blog.goodfun.me/articles/2019/11/26/1574762483313.html
    本作品由 IvyWooo 采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可,转载请注明出处。

    相关文章

      网友评论

          本文标题:springframework介绍

          本文链接:https://www.haomeiwen.com/subject/zyyywctx.html