您的位置:首页 > 编程语言 > Java开发

Spring 学习笔记(1) Spring 核心功能和概念

2021-07-24 17:08 761 查看

一、什么是 Spring 框架

首先来介绍一下 Spring , 打开 Spring 官网我们可以看到 Spring 有众多框架,比如 SpringMVC、 SpringBoot、 Spring Cloud 等等,它是这些框架的集合,而 Spring Framework 是 Spring 里面的一个开源框架,并且 Spring 框架是其它框架的核心和基础。

下面来看看 Spring 4.0 框架

在实际的开发中,服务器端通常采用三层体系架构,分别为表现层 (web)、业务逻辑层(service)、持久层(dao)。Spring 致力于 Java EE 应用各层的解决方案,对每一层都提供了技术支持。在表现层提供了与 Spring MVC、Struts2 框架的整合,在业务逻辑层可以管理事务和记录日志等,在持久层可以整合 MyBatis、Hibernate 和 JdbcTemplate 等技术。

1. IoC

IoC(Inversion of Control,翻译为“控制反转”)不是一个具体的技术,而是一种设计思想。与传统控制流相比,IoC 会颠倒控制流,在传统的编程中需要开发者自行创建并销毁对象,而在 IoC 中会把这些操作交给框架来处理,这样开发者就不用关注具体的实现细节了,拿来直接用就可以了,这就是控制反转。

当需要对象时,通过 IoC 容器帮对象找到相应的依赖直接注入。不用对象主动去获取.

2. DI

DI(Dependency Injection,翻译为“依赖注入”)表示组件间的依赖关系交由容器在运行期自动生成,也就是说,容器知道哪个组件(类)运行的时候,需要哪个类;容器就能通过反射的形式将容器中准备好的对象注入(这里使用的是反射给属性赋值)到需求的组件中去 。

IoC 和 DI 事实上是同一概念从不同角度描述的,依赖注入其实就是控制反转思想的实现

3.AOP

AOP 的全称是 “Aspect Oriented Programming", 即面向切面编程。和 OOP (面向对象编程)类似,是一种编程思想。AOP 采取横向抽取机制(动态代理),取代了传统纵向继承机制的重复性代码,其应用主要体现在事务处理、日志管理、权限控制、异常处理等方面。是开发人员可以集中处理某个关注点或横切逻辑,减少对业务代码的侵入,增强代码的可读性和可维护性。

AOP 的作用就是保证开发者在不修改源代码的前提下,为系统中的业务组件添加某种通用功能。AOP 就是代理模式的典型应用。

二、Spring 的体系结构

1. Core Container 模块

在 Spring 框架模块中,最重要的是核心容器,它是框架的基础。从图中可以看到,核心组件有四个部分,Beans 、Core 核心组件、Context 上下文组件和 SpEL 表达式语言组件组成。核心容器在项目构建时必须导入。

  • Beans 组件(spring-beans):主要解决了 Bean 的定义、创建和解析,也就是 Bean 工厂与 Bean 的装配。
  • Core 组件(spring-core): IoC 和 DI 的最基本实现。
  • Context (spring-context)组件:建立在 Core 和 Beans 模块的基础之上,ApplicationContext 接口是上下文模块的焦点。
  • SpEL (spring-expression)组件:提供强大的表达式语言支持,支持访问和修改属性值。

它们之间的依赖关系:

由于 spring-core 依赖 commons-logging 所以其他模块都依赖 logging

2. AOP、Aspects、Instrumentation 和 Messaging

  • AOP 组件(spring-aop): 提供面向切面编程实现,比如日志记录、权限控制等通用功能和业务逻辑分离技术。降低业务逻辑和通用功能的耦合。
  • Aspects 组件(spring-aspects):提供 AspectJ 的集成,是一个功能强大且成熟的 AOP 框架。
  • Instrumentation 组件(spring-instrumentation):提供类工具的支持和类加载器的实现。
  • messaging 组件(spring-messageing): 提供对消息传递体系结构和协议的支持。

依赖关系:

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

  • JDBC 组件(spring-jdbc):提供了一个 JBDC 支持
  • ORM 模块:对象关系映射,集成 orm 框架包括有 JPA、JDO、Hibernate 和 MyBatis 等。而且还可以使用 Spring 事务管理,无需额外控制事务。
  • OXM 组件(spring-oxm):提供了一个支持 Object /XML 映射的抽象层实现,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。将 Java 对象映射成 XML 数据,或者将XML 数据映射成 Java 对象。
  • JMS 组件(spring-jms):指 Java 消息服务,提供一套 “消息生产者、消息消费者”模板用于更加简单的使用 JMS,JMS 用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
  • Transactions 事务组件(spring-tx):支持编程和声明式事务管理。

它们的依赖关系:

4. web 模块

  • Web 组件(spring-web):提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IOC 容器初始化以及 Web 应用上下文。
  • Servlet 组件(spring-webMVC):提供了一个 Spring MVC Web 框架实现。Spring MVC 框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的 JSP 标签,完全无缝与 Spring 其他技术协作。
  • WebSocket 组件(spring-webSocket):提供了简单的接口,用户只要实现响应的接口就可以快速的搭建 WebSocket Server,从而实现双向通讯。
  • Portlet 组件:提供了在 Portlet 环境中使用 MVC 实现,类似 Web-Servlet 模块的功能。

它们的依赖关系:

5. Test模块

spring-test 模块支持 JUnit 或 TestNG 对 Spring 组件进行单元测试和集成测试。并且还额外提供了一些基于 Spring 的测试功能,比如在测试 Web 框架时,模拟 Http 请求的功能。

参考文献

1. spring framework 核心框架体系结构

2. spring 体系结构

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: