【Spring】Spring的特性、优缺点、模块组成等

Spring是什么

首先来介绍下Spring是什么:

Spring 是一个轻 量级 Java 开 发框架 ,最早 有 Rod Johnson 创建,目 的是为 了解 决 企业级应 用开发 的业务 逻辑层和 其 他各 层 的耦合 问题 。 它是 一个分 层的 JavaSE/JavaEE full-stack( 一站式)轻 量级开源框架,为 开发 Java 应用程序提供全 面的基 础架构支持。Spring 负责 基础架构,因此 Java 开发者可以专 注于应用程序的开 发。Spring 最根本的 使命是解决企业级 应用开发的复杂性 ,即简化 Java 开发 。
Spring 可以 做很 多事 情, 它 为 企业 级 开 发提 供 给 了丰富的 功能 ,但 是这 些功 能 的 底层 都 依赖 于 它 的 两 个 核 心 特 性 , 也 就是 依赖 注 入 ( dependency injection,DI ) 和 面 向 切 面 编 程(aspect-oriented programming ,AOP)。

Spring 采取了以下4 种关键策略:

  • 基于 POJO 的轻 量级 和最小侵 入性编程;

  • 通过依赖注入和面 向接口实现松耦合 ;

  • 基于切面和惯例进 行声明式编程;

  • 通过切面和模板减 少样板式代码。

Spring 框架的设计目标,设计理念 ,和核心

Spring 设计目标 :Spring 为开 发者提供一个一站 式轻量级应用开发 平台;

Spring 设计理念:在JavaEE开 发中 ,支持 POJO 和 JavaBean 开发方式,使应用面向接口开发 , 充分支持 OO ( 面 向 对象 ) 设计方法 ; Spring 通过 IoC 容器实现对象耦合关系的管理,并实现依赖反转,将对象之间的依赖关系交给 IoC 容器,实现解耦;

Spring 框架的核 心 : IoC 容 器 和 AOP 模 块 。 通 过 IoC 容 器 管 理 POJO 对 象 以 及 他 们 之 间 的耦合关系;通过 AOP 以动 态非 侵入的方 式增强服务。

IoC 让 相 互协 作 的 组件保 持 松散 的 耦 合,而 AOP 编 程允许你把遍布于 应用各层的功能分离出来形成可重用的功能组件。

Spring 的优缺点 是什么?

优点

方便解耦,简化开 发。

Spring 就是一个 大工厂,可以将所 有对象的创建和依 赖关系的维护,交 给 Spring 管理。

AOP 编程 的支 持

Spring 提供面向 切面编程,可以方 便的实现对程序进 行权限拦截、运行 监控等功能。

声明式事务的支持

只需要通过配置就 可以完成对事务的 管理,而无需手动 编程。

方便程序的测试

Spring 对 Junit4 支持 ,可 以通过注解方 便的测试 Spring 程序 。

方便集成各种优秀 框架

Spring 不排斥各种优秀 的 开源 框架,其内部 提供了对 各 种优 秀框架的 直 接支持(如:Struts、 Hibernate、MyBatis 等)。

降低 JavaEE API 的使 用难度

Spring 对 JavaEE 开 发中非 常 难用 的 一些 API(JDBC、JavaMail 、远程调用 等),都提供了 封装,使这些 API 应用 难度大大 降低。

缺点

Spring 明明一个 很轻量级的框架, 却给人感觉大而全

Spring 依赖反射 ,反射影响性能

使用门槛升高,入 门 Spring 需要 较长时间

Spring 应用场景

JavaEE 企业应用 开发,包括 SSH、SSM 等

Spring 价值:

  • Spring 是非侵入 式的框架,目标是使应用程序代码对框架依赖最小化;

  • Spring 提供一个 一致的编程模型, 使应用直接使用 POJO 开发,与运行 环境 隔离开来 ;

  • Spring 推动应用设计风格向面向对象和面向接口开发转变 ,提高了代码的重用性和可测试性;

Spring 由哪些模块组成?

Spring 总 共 大 约有 20 个 模 块 , 由 1300 多 个 不 同 的 文 件 构 成 。 而 这 些 组 件 被 分 别 整合 在 核 心容器( Core Container) 、 AOP(Aspect Oriented Programming)和设 备 支持 ( Instrmentation ) 、 数 据 访 问 与 集 成 ( Data Access/Integeration) 、 Web 、 消 息(Messaging) 、 Test等 6 个模 块中。

  • spring core: 提供了 框架的基 本 组成部 分, 包 括 控制 反 转(Inversion of Control ,IOC ) 和依赖注入(Dependency Injection,DI)功能。

  • spring beans :提 供了 BeanFactory ,是工厂模 式的 一 个经典 实现,Spring 将管理对 象称 为 Bean 。

  • spring context: 构 建于 core 封 装 包基础 上的 context 封装 包,提 供 了一 种 框 架式的 对 象访问方法。

  • spring jdbc : 提 供 了 一个 JDBC 的 抽 象 层 , 消 除 了 烦 琐 的 JDBC 编 码 和 数 据 库 厂 商 特 有 的 错误代码解析, 用于 简化 JDBC。

  • spring aop:提 供了面向切面的编 程实现,让你可以 自定义拦截器、切 点等。

  • spring Web: 提供了 针对 Web 开 发的 集 成特性 ,例 如 文件上 传,利 用 servlet listeners 进行 ioc 容器初始 化和针对 Web 的 ApplicationContext。

  • spring test : 主 要为测 试 提 供 支持 的 , 支 持使用 JUnit 或 TestNG 对 Spring 组 件 进行单 元 测试和集成测试。

Spring 框架中都用到了哪些设计模式?

  • 工厂模式:BeanFactory 就是 简单 工厂模式 的体现,用来创建 对象的实例;

  • 单例模式:Bean 默认为单 例模 式。

  • 代理模式:Spring 的 AOP 功能用到了 JDK 的动 态代 理和 CGLIB 字节码生 成技术;

  • 模板方法:用来解 决代码重复的问题 。比如. RestTemplate, JmsTemplate, JpaTemplate 。

  • 观 察者模式:定 义对象键一种一对 多的依赖关系,当 一个对象的状态发 生改变时,所 有依赖于它的对象都会得 到通知被制动更新 ,如 Spring 中 listener 的实现 –ApplicationListener。

详细讲解一下核心 容器(spring context 应用上下 文) 模块。这是基本 的 Spring 模 块,提 供 spring 框架的基 础功 能 , BeanFactory 是 任何以 spring为基础的应用的核 心。Spring 框架 建立在此 模块之上,它使 Spring 成为一个 容器 。

Bean 工厂是 工厂模式的一个实 现 ,提供了控制反转 功能,用 来把 应用的配 置和依赖从真正的应用代码中分离 。最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory,它 根 据 XML 文件 中 的 定 义加载 beans 。该容器从 XML 文件 读取 配置元数据并 用它去创建一个完 全配置的系统或应 用。

Spring 框架中有哪些不同类型的事件?

Spring 提供了以下 5 种标准的事件:

  • 上 下 文 更 新 事 件 ( ContextRefreshedEvent ):在调 用 ConfigurableApplicationContext 接口中的 refresh() 方法时被触发。

  • 上 下 文 开 始 事 件(ContextStartedEvent):当容器调用 ConfigurableApplicationContext 的 Start()方法 开始/重新 开始容器 时触发该事件。

  • 上 下 文 停 止 事 件(ContextStoppedEvent ):当容器调用ConfigurableApplicationContext 的 Stop()方法 停止容器时触发该 事件。

  • 上 下 文关闭 事件 (ContextClosedEvent):当 ApplicationContext 被关 闭时触 发 该 事 件 。 容器被关闭时,其 管理的所有单例 Bean 都被 销毁 。

  • 请 求处理 事件(RequestHandledEvent):在 Web 应 用中, 当一个 http 请 求( request )

  • 结 束 触 发 该 事 件 。 如 果 一 个 bean 实 现 了 ApplicationListener 接 口 , 当 一 个 ApplicationEvent 被发 布以 后,bean 会自 动被通知。

Spring 应用程序有哪些不同组件?

接口: 定义功能。

Bean 类: 它包含属性,setter 和 getter 方法 ,函数等。

Bean 配置文件 :包含类的信息 以及如何配置它们 。

Spring 面向切面编程(AOP) : 提供面向切面编程 的功能。

用户程序: 它使用接口。

使用 Spring 有哪些方式?

  • 作为一个成熟的 Spring Web 应用 程序 。

  • 作为第三方 Web 框架,使 用 Spring Frameworks 中间 层。

  • 作为企业级 Java Bean ,它 可以包装 现有的 POJO (Plain Old Java Objects )。

  • 用于远程使用。

猜你喜欢

转载自blog.csdn.net/Black_Customer/article/details/107431687