Skip to main content

控制翻转 (IoC)、依赖注入 (DI) 和面向切面编程 (AOP)

Yujie LiuAbout 2 minComputer ScienceBackend DevelopmentSpringboot

控制翻转 (IoC)、依赖注入 (DI) 和面向切面编程 (AOP)

IOC和DI

IOC是指在程序开发过程中,对象实例的创建不再由调用者管理,而是由Spring容器创建,Spring容器会负责控制程序之间的关系,而不是由代码直接控制,因此,控制权由程序代码转移到了Spring容器,控制权发生了反转,即控制反转。

而DI依赖注入其实和控制翻转是同一种开发模式的一体两面,由Spring容器对各个Bean的依赖进行注入。

Spring IOC提供了两种IOC容器,分别是BeanFactory和ApplicationContext。

BeanFactory

BeanFactory是基础的IOC容器,是一个接口,提供了完整的IOC服务,BeanFactory是一个管理Bean的工厂,他主要负责初始化各种bean,并调用它们的生命周期方法 BeanFactory接口有多个实现类,最常见的是XmlBeanFactory,它根据Xml配置文件中的定义装配Bean。

AOP

面向切面编程是针对面向对象编程中的不足之处所提出的,我们在进行开发时往往会根据业务逻辑比如用户服务,首页服务,推荐服务这些业务核心服务进行封装,但针对每个核心服务都可能用到的辅助服务,比如日志记录,事务管理等,就比较难以进行封装,把这些辅助服务在核心服务中全部实现一遍肯定是不那么整洁的。

因此面向切面编程的出现,就是为了解决这个痛点,使得同样的一个辅助功能实现在切面中便可在所有业务逻辑中生效。

比如在切面中实现事务提交失败回滚后等待一段时间重新尝试的逻辑。

Last update:
Contributors: Yujie