Spring的IOC 和AOP基础概述

Spring概述

Spring简介

Spring官方网站为:https://spring.io/

而我们常所的Spring其实是指Spring Framework 。

Spring优势

  1. 方便解耦,简化开发:通过spring提供的ioc容器,可以将对象之间的依赖关系交给spring进行控制,避免硬编码导致的过度程序耦合。用户也不必再为单例模式类,属性文件解析等这些底层的需求代码编写,可以更加专注于上层的应用。
  2. AOP编程的支持:通过Spring的AOP功能,方便进行面向切面编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
  3. 声明式事务的支持:@Transactional,可以将我们从单调烦恼的事务管理代码中解脱出来,通过声明方式灵活的进行事务管理,提高开发效率和质量。
  4. 方便程序的测试:可以用非容器依赖的编程方式进行几乎所以的测试工作,测试不再是昂贵的操作,而是随手可做的事情。
  5. 方便集成各种优秀的框架:Spring可以降低各种框架的使用难度。
  6. 降低javaee api 的使用难度:spring对javaee api 如jdbc,javamail等进行了封装,使这些api使用难度大为降低。

Spring的核心构造

Spring是一个分层非常清晰并且依赖关系职责定位非常明确的轻量级框架,主要包括了:数据处理模块,web模块,AOP/Aspects模块,Core Container模块和Test模块。

  1. Spring核心容器(Core Container)容器是Spring框架的最核心的部分,它管理者spring应用中bean的创建,配置和管理。在该模块中,包含了spring bean工厂,它为spring提供了DI的功能。基于bean工厂,我们还会发现有多种spring应用上下文的实现。所以的spring模块多构建于核心容器之上。
  2. 面向切面编程AOP/Aspects Spring 对面向漆面编程提供了丰富的支持。这个模块式spring应用系统中开发切面的基础,与DI一样,AOP可以帮助应用对象解耦。
  3. 数据访问与集成:Spring的jdbc和dao模块封装了大量的模版代码,这样可以使得数据库代码变动简介。
  4. web该模块提供了SpringMVC框架给web应用,还提供了多种构建和其他应用交互的远程调用方案。
  5. Test为使得开发者能够很方便的进行测试。

核心思想

IOC

IOC是控制反转,是一个技术思想,是java开发领域对象的创建管理的问题。

在传统的开发中,我们要在A依赖于B类,往往需要再A类中new一个B的对象。

而在IOC思想下,我们不需要再自己去new对象,而是交给IOC容器去帮我们实例化对象并且管理它,我们需要使用哪个对象,去问ioc容器即可。

DI和IOC 区别

IOC控制反转:IOC是一种设计思想,将对象的创建、生命周期管理及依赖关系的控制权从应用程序代码转移到外部容器,实现了"控制权"的反转。

DI依赖注入:DI是IOC的具体实现方式,通过容器将对象所需的依赖"注入"给对象,而不是由对象自身创建依赖。

IOC是思想层面的设计原则,DI是技术层面的具体实现,Spring框架通过DI来实现IOC,从而达到松耦合的目的。

AOP

当我们使用面向对象OOP时候回出现什么问题?

  • 横向代码重复问题
  • 横向逻辑代码和业务代码混合在一起,代码臃肿,维护不方便。

Aop:Aspect oriented Programming 面向切面编程/面向方面编程

指定是横切逻辑,原有业务逻辑代码不能动,只能操作横切逻辑代码,所以面向横切逻辑。

指的是横切逻辑代码往往要影响的是很多个方法,每个方法都如同一个点,多个点构成面,有一个面的概念在里面。

相关推荐
guslegend6 天前
MybatisPlus
arcfor2025