spring学习笔记--概述&体系结构

概述:

   Spring是最受欢迎的企业级java应用程序开发框架。

   优点:创建性能好、易于测试、可重用代码。轻量级的框架,基础版本只有2MB左右的大小。

   好处:Spring可以使开发人员使用POJOs开发企业级的应用程序。只使用POJOs的好处是你不需要一个EJB容器产品,比如一个应用程序服务器,比如Tomcat。

              Spring在一个单元模式中是有组织的。即使包和类的数量非常大,你只要担心你是需要的,其他的可以忽略。

              Spring不会让你白费力气重复工作。它真正的利用了一些现有的技术,比如:ORM框架、日志框架、JEE、Quartz和JDK计时器,其他试图技术。

   依赖注入(DI)

   Spring最认同的技术是控制反转的依赖注入模式。控制反转(IOC)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。

   依赖注入是什么?例如类A依赖于类B。但是将类B通过IOC的方式注入到类A中。

   依赖注入可以以构造函数传递参数的方式发生,或者通过使用setter方法post-construction。依赖注入是Spring框架的核心部分。

   当编写一个复杂的Java应用程序时,应用程序类应该尽可能的独立于其他的Java类来增加这些类可重用可能性,当进行单元测试时,也可以使他们独立于其他类进行测试。

   面向方面的程序设计(AOP)

   Spring框架的一个关键组件是面向方面的程序设计(AOP)框架。一个程序中跨越多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。

   比如:日志记录、声明性事物、安全性、和缓存等等。

   在OOP中模块化的关键单元是类,而在AOP中模块化的关键单元是方面。AOP帮助你将横切面关注点从它们所影响的对象中分离出来,然而依赖注入帮助你将你的应用程序对象从彼此中分离出来。

   核心容器

   核心容器由spring-core,spring-beans,spring-context,spring-context-support和spring-expression等模块组成,它们的细节如下:

   spring-core模块提供了框架的基本组成部门,包括IOC和依赖注入功能。

   spring-beans模块提供BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦。

   context模块建立在core和beans模块的基础上建立起来的,它以一种类似于JNDI注册的方式访问。Context模块继承于Bean模块,并且添加了国际化、事件传播、资源加载和透明的创建上下文等功能。

   ApplicationContext接口是Context模块的焦点。spring-context-support提供了对第三方库集成到Spring上下文的支持,例如:缓存(EhCache、Guava、JCache)、邮件、调度、模块引擎等。

   spring-expression模块提供了强大的表达式语言,用于在运行时查询和操作对象图。支持get和set属性值、属性赋值、方法调用、访问数组集合及索引的内容、逻辑算术运算、命名变量、通过名字从Spring IOC容器检索对象,还支持列表的投影,选择以及聚合等。

   数据访问/集成

   数据访问/集成层包括JDBC,ORM,OXM,JMS和事务处理模块,它们的细节如下:

   JDBC模块提供了JDBC抽象层,它消除了冗长的JDBC编码和对数据库供应商特定错误代码的解析。

   ORM模块提供了流行的对象关系映射API的集成,包括JPA、JDO和Hibernate等。通过此模块可以让这些ORM框架和spring的其他功能整合,例如:事物管理。

   OXM模块提供了对OXM实现的支持,比如JAXB、Castor、XMLBeans、JiBX、XStream等。

   JMS模块包含生产和消费消息的功能。

   事物模块为实现特殊接口类及所有的POJO支持编程和声明式事物管理。

   web

   Web 层由 Web,Web-MVC,Web-Socket 和 Web-Portlet 组成,它们的细节如下:

   Web模块提供面向web的基本功能和面向web的应用上下文,比如多部分(multipart)文件上传功能、使用Servlet监听器初始化IoC容器等。它还包括HTTP客户端以及Spring远程调用中与web相关的部分。

   Web-mvc 模块为web应用提供了模型视图控制(MVC)和REST Web服务的实现。Spring的MVC框架可以使领域模型代码和web表单完全地分离,且可以与Spring框架的其它所有功能进行集成。

   Web-Socket 模块为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。

   Web-Portlet 模块提供了用于Portlet环境的MVC实现,并反映了spring-webmvc模块的功能。

原文地址:https://www.cnblogs.com/BounceGuo/p/12048218.html