Spring IOC/AOP/Bean

84 阅读4分钟

IOC && AOP

IOC

IoC(Inversion of Control:控制反转)  是一种设计思想,而不是一个具体的技术实现。IOC 的核心思想是将对象的创建、组装和依赖关系的管理交由框架来负责,而不是由开发者手动进行管理。通过将控制权反转给框架,开发者只需要定义对象之间的依赖关系,而不需要显式地创建和管理对象。这样可以减少代码的耦合度、提高可维护性和灵活性。 。不过, IoC 并非 Spring 特有,在其他语言中也有应用。

在 Spring 中,IOC 是通过依赖注入(Dependency Injection,DI)实现的。依赖注入是指通过将依赖对象注入到目标对象中,完成对象之间的关联。Spring 提供了多种依赖注入的方式,包括构造函数注入、Setter 方法注入和字段注入等。

在 Spring 中, IoC 容器是 Spring 用来实现 IoC 的载体, IoC 容器实际上就是个 Map(key,value),Map 中存放的是各种对象。

在 Spring 框架中,AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,用于通过将横切关注点与核心业务逻辑分离,提供一种对系统进行模块化和重用的方法。

AOP

AOP 的核心思想是将与多个对象或模块相关的横切关注点(如日志记录、事务管理、安全性检查等)从核心业务逻辑中抽离出来,形成可重用的模块,称为切面(Aspect)。切面可以独立地定义和管理横切关注点,并可以在需要的时候将其应用到不同的对象或模块上,而无需修改核心业务逻辑。

在 Spring 中,AOP 提供了一种机制来实现切面编程,以增强应用程序的功能和模块化。Spring AOP 基于动态代理技术实现,它通过代理对象将横切逻辑织入到目标对象的方法调用中。

Spring AOP 支持以下关键概念和功能:

  1. 切点(Pointcut):定义需要被增强的目标方法集合,可以通过表达式或注解进行指定。
  2. 通知(Advice):定义在切点执行前、执行后或抛出异常时需要执行的逻辑。常见的通知类型包括前置通知、后置通知、返回通知和异常通知等。
  3. 切面(Aspect):将切点和通知组合在一起的模块。切面定义了在哪些切点上应用哪些通知。
  4. 织入(Weaving):将切面应用到目标对象的过程。织入可以在编译时、类加载时或运行时进行。

通过使用 Spring AOP,开发者可以将横切关注点与核心业务逻辑解耦,提高代码的可重用性和可维护性。常见的应用场景包括日志记录、性能监控、事务管理和安全性检查等。

总结而言,Spring AOP 是一种面向切面编程的实现,通过将横切关注点与核心业务逻辑分离,提供一种模块化和重用的方法。它基于动态代理技术,通过代理对象将横切逻辑织入到目标对象的方法调用中。通过使用 Spring AOP,开发者可以更方便地实现横切关注点,并提高代码的可重用性和可维护性。



Spring,Spring MVC,Spring Boot 之间什么关系?

Spring 包含了多个功能模块(上面刚刚提到过),其中最重要的是 Spring-Core(主要提供 IoC 依赖注入功能的支持) 模块, Spring 中的其他模块(比如 Spring MVC)的功能实现基本都需要依赖于该模块。

Spring MVC 是 Spring 中的一个很重要的模块,主要赋予 Spring 快速构建 MVC 架构的 Web 程序的能力。MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,其核心思想是通过将业务逻辑、数据、显示分离来组织代码。

image.png

使用 Spring 进行开发各种配置过于麻烦比如开启某些 Spring 特性时,需要用 XML 或 Java 进行显式配置。于是,Spring Boot 诞生了!

Spring 旨在简化 J2EE 企业应用程序开发。Spring Boot 旨在简化 Spring 开发(减少配置文件,开箱即用!)。

Spring Boot 只是简化了配置,如果需要构建 MVC 架构的 Web 程序,还是需要使用 Spring MVC 作为 MVC 框架,只是说 Spring Boot 帮忙简化了 Spring MVC 的很多配置,真正做到开箱即用!