【Spring】架构模块

来源:互联网 发布:ubuntu视频下载软件 编辑:程序博客网 时间:2024/06/07 04:00

       官网地址:https://docs.spring.io/spring/docs/4.3.13.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#overview-modules

       参考版本:4.3.13


       Spring框架由大约20个模块组成的特性组成。这些模块被分到“Core Container(核心容器), Data Access/Integration(数据存取、集成), Web, AOP (面向切面编程), Instrumentation, Messaging(消息), and Test(测试) ”这7大组件当中。

       4.3.13的架构图

       

       【Vincent note】对比3.2.18的架构图       

           

        通过对比发现,Spring4相对于3,从6个组件,变成了7个组件,多了一个Messaging组件。
        --------------------------------------------------------------------------------------


       下面的部分列出了每个特性的可用模块以及他们的构件名称和他们所覆盖的主题:

       1.Core Container 
       “核心容器”包含了“spring-core, spring-beans, spring-context, spring-context-support”, 以及“spring-expression(Spring EL表达式)”这几个模块(组件)。
      spring-core和spring-beans模块提供了框架的基本部分(https://docs.spring.io/spring/docs/4.3.13.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#beans-introduction),包括IoC和依赖注入功能。 BeanFactory是工厂模式的复杂实现。 它消除了对编程单例的需要,并允许您将依赖关系的配置和规范与实际程序逻辑分离。
      上下文(https://docs.spring.io/spring/docs/4.3.13.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#context-introduction)(spring-context)模块建立在Core and Beans模块提供的实体基础上:它是以类似于JNDI注册表的框架式方式访问对象的一种方法。 上下文模块从Beans模块继承其功能,并增加了对国际化的支持(例如使用资源束),事件传播,资源加载以及例如Servlet容器透明创建上下文。 Context模块还支持Java EE功能,如EJB,JMX和基本远程处理。 ApplicationContext接口是Context模块的焦点。 Spring-context-support支持将常见的第三方库集成到Spring应用程序上下文缓存(EhCache,Guava,JCache),邮件(JavaMail),调度(CommonJ,Quartz)和模板引擎(FreeMarker,JasperReports,Velocity)。
       spring-expression模块提供了强大的表达式语言,用于在运行时查询和操作对象图。 它是JSP 2.1规范中规定的统一表达语言(统一EL)的扩展。 该语言支持设置和获取属性值,属性分配,方法调用,访问数组,集合和索引器的内容,逻辑和算术运算符,命名变量以及从Spring的IoC容器中以名称检索对象。 它还支持列表投影和选择以及常见列表聚合。
     
      2.AOP 和 Instrumentation
      spring-aop模块提供符合AOP联盟标准的面向切面的编程实现,允许您定义方法拦截器和切入点,以便将不相关的功能代码进行解耦合。 使用源代码级元数据功能,您还可以将行为信息合并,就像.NET属性那样。
      单独的Spring-aspects模块提供与AspectJ的集成。
      spring-instrument模块提供了在某些应用服务器中使用的类仪表支持和类加载器的实现。 spring-instrument-tomcat模块包含Spring对tomcat的instrumentation代理。
 
      3.Messaging(消息传送)
      Spring Framework 4包括一个Spring消息传递模块,其中包含来自Spring Integration项目(如Message,MessageChannel,MessageHandler等)的关键抽象,以作为基于消息的应用程序的基础。 该模块还包括一组用于将消息映射到方法的注释,类似于基于Spring MVC注释的编程模型。


      4.Data Access/Integration
      Data Access/Integration这一层由"JDBC, ORM, OXM, JMS,Transaction"模块组成。
      spring-jdbc模块提供了一个JDBC抽象层,可以消除冗长的JDBC编码和解析数据库供应商特定错误代码的需要。
      spring-tx模块支持用于实现特殊接口和所有POJO(普通Java对象)的类的编程和声明式事务管理。
      spring-orm模块为流行的对象关系映射API提供集成层,包括JPA,JDO和Hibernate。使用spring-orm模块,您可以将所有这些O / R映射框架与Spring提供的所有其他功能结合使用,例如前面提到的简单的声明式事务管理功能。
      spring-jms模块(Java Messaging Service)包含用于生成和消费消息的功能。自Spring Framework 4.1以来,它提供了与弹出消息模块的集成。


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


       6.Test
       Spring测试模块支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试。 它提供了Spring ApplicationContexts的一致加载和这些上下文的缓存。 它还提供可用于孤立测试代码的模拟对象。


       有了6(或者7都ok)大组件的宏观,具体在深入,就有了方向,核心组件重点学习,其他组件做了解会用,层次就分明了。

       That's all.