1.Spring模块
核心容器
核心容器由核心,Bean,上下文和表达式语言模块组成,它们的细节如下:
核心模块提供了框架的基本组成部分,包括 IoC 和依赖注入功能。
Bean 模块提供 BeanFactory,它是一个工厂模式的复杂实现。
上下文模块建立在由核心和 Bean 模块提供的坚实基础上,它是访问定义和配置的任何对象的媒介。ApplicationContext 接口是上下文模块的重点。
表达式语言模块在运行时提供了查询和操作一个对象图的强大的表达式语言
数据访问/集成
数据访问/集成层包括 JDBC,ORM,OXM,JMS 和事务处理模块,它们的细节如下:
JDBC 模块提供了删除冗余的 JDBC 相关编码的 JDBC 抽象层。
ORM 模块为流行的对象关系映射 API,包括 JPA,JDO,Hibernate 和 iBatis,提供了集成层。
OXM 模块提供了抽象层,它支持对 JAXB,Castor,XMLBeans,JiBX 和 XStream 的对象/XML 映射实现。
Java 消息服务 JMS 模块包含生产和消费的信息的功能。
事务模块为实现特殊接口的类及所有的 POJO 支持编程式和声明式事务管理。
Web
Web 层由 Web,Web-MVC,Web-Socket 和 Web-Portlet 组成,它们的细节如下:
Web 模块提供了基本的面向 web 的集成功能,例如多个文件上传的功能和使用 servlet 监听器和面向 web 应用程序的上下文来初始化 IoC 容器。
Web-MVC 模块包含 Spring 的模型-视图-控制器(MVC),实现了 web 应用程序。
Web-Socket 模块为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。
Web-Portlet 模块提供了在 portlet 环境中实现 MVC,并且反映了 Web-Servlet 模块的功能。
其他模块
AOP 模块提供了面向方面的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,它实现了应该分离的功能。
Aspects 模块提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。
Instrumentation 模块在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。
Messaging 模块为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的 STOMP 信息。
测试模块支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。
Spring Ioc 容器
Spring容器是Spring框架的核心,容器将创建对象,把他们连在一起,配置他们,并管理他们的整个生命周期及其销毁
Spring IoC 容器利用 Java 的 POJO 类和配置元数据来生成完全配置和可执行的系统或应用程序。
Spring的两种容器
- BeanFactory 用于轻量级的应用程序,如移动设备或基于applet的应用程序
- ApplicationContext 容器包含BeanFactory的所有功能,该容器添加了更多的企业特定的功能,例如从一个属性文件中解析文本信息的能力,发布应用程序事件给感兴趣的事件监听器的能力
- 容器的应用过程,第一步生成工厂对象,加载完指定文件,通过ApplicatinContext来生成所有的对象,第二步利用第一步的上下文的getBean()方法来得到所需要的bean,返回一个真正的对象
Spring 配置元数据
Spring IoC 容器完全由实际编写的配置元数据的格式解耦。有下面三个重要的方法把配置元数据提供给 Spring 容器:
基于 XML 的配置文件。
基于注解的配置
基于 Java 的配置
Bean 的作用域
作用域 | 描述 | |
---|---|---|
singleton | 单例 | |
prototype | 原型模式,多个实例 | |
request | 该作用域将 bean 的定义限制为 HTTP 请求。只在 web-aware Spring ApplicationContext 的上下文中有效。 | |
session | 该作用域将 bean 的定义限制为 HTTP 会话。 只在web-aware Spring ApplicationContext的上下文中有效。 | |
global-session | 该作用域将 bean 的定义限制为全局 HTTP 会话。只在 web-aware Spring ApplicationContext 的上 |
Bean的生命周期
指定初始方法 init-method和destory-method
2. Spring依赖注入
- 基于构造函数的注入
- 基于set函数的注入
3.Spring Bean自动装配
- byname 由属性名自动装配
- byType 由属性数据自动装配
- 由构造函数自动装配
4. Spring配置
- 基于java的配置
- 基于注解的配置
5.Spring AOP(面向方面编程)
- 面向方面的编程把程序逻辑分解成不同的部分—-关注点
- 跨一个应用程序的多个点的功能—-横切关注点
- Srping AOP模块提供拦截器来拦截一个应用程序,你可以在方法执行之前或之后添加额外的功能
- @AspectJ来提供面向方面编程
6.Spring 事务管理(以保证数据的完整性和一致性)
- 原子性 : 整个序列要么一起成功,要么一起失败
- 一致性 : 表示数据库的引用完整性的一致性,唯一的主键
- 隔离性 : 每个事务应当与其他事务隔离,以防止数据破坏
- 持久性 : 一个事务完成之后,那么就是永久性的,不能因系统的故障而从数据库中删除
7.Spring MVC框架
- 模型封装了应用程序数据,并且通常它们由 POJO 组成。
- 视图主要用于呈现模型数据,并且通常它生成客户端的浏览器可以解释的 HTML 输出。
- 控制器主要用于处理用户请求,并且构建合适的模型并将其传递到视图呈现
下面是对应于 DispatcherServlet 传入 HTTP 请求的事件序列:
收到一个 HTTP 请求后,DispatcherServlet 根据 HandlerMapping 来选择并且调用适当的控制器。
控制器接受请求,并基于使用的 GET 或 POST 方法来调用适当的 service 方法。Service 方法将设置基于定义的业务逻辑的模型数据,并返回视图名称到 DispatcherServlet 中。
DispatcherServlet 会从 ViewResolver 获取帮助,为请求检取定义视图。
一旦确定视图,DispatcherServlet 将把模型数据传递给视图,最后呈现在浏览器中。