IoC和AOP是什么关系?

What is the relationship of IoC and AOP?

我正在阅读 spring 文档 this 网站。

我对IoC(或DI)和AOP已经有了一点了解。

在阅读文档时,我读到了这句话。

Foremost amongst these is the Spring Framework’s Inversion of Control (IoC) container. A thorough treatment of the Spring Framework’s IoC container is closely followed by comprehensive coverage of Spring’s Aspect-Oriented Programming (AOP) technologies.

据我所知,IoC是Container如何创建实例并在需要时注入它们,AOP是面向透视的编程;如何让你专注于你想做的事情。

不过,我理解上面这句话,AOP works well thanks to IoC。

不知道这两者是什么关系

坐等好答案

IoC 框架允许通过外部影响 注入实现,通常是配置。

AOP 的目的是在不直接修改代码的情况下 将其他关注点松散地编织到业务逻辑代码中 .

Spring是一个广泛使用AOP实现IoC的框架。

网上有大量关于这两种模式的资料material。 对于 IoC 启动 here. For AOP, I found this 有帮助。

通过某种 运行 时间容器管理您的代码,IOC 和 AOP 都成为可能。

容器将依赖项注入您的构造函数和 属性 设置器,而不是您手动执行。 Spring is/was 的座右铭:"Creating objects so you don't have to."

一旦您的代码运行在容器中,引入 AOP 概念就足够简单了,这些概念归结为在容器管理的内容之前或之后执行代码。

IOC 和 AOP 是兄弟实践,由 运行 时间容器实现。从一个 IOC 容器开始,很容易引入 AOP 特性。从 AOP 容器开始,IOC 功能很容易跟上。

AOP 主要涉及抽象功能,这些功能全面应用于应用程序的许多组件。例如日志记录和安全性。这些与实际业务功能几乎没有关系,但却是系统范围内必不可少的功能

IOC 或 Di 主要是松散耦合和管理应用程序组件之间的依赖关系。