spring ioc和aop原理

95 阅读2分钟

Spring的IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的两个核心概念,它们分别解决了对象之间的依赖关系管理和系统级问题。以下是它们的基本原理:

IOC(控制反转)原理:

1、在传统的Java设计中,对象的创建和依赖关系的建立通常是由对象本身在内部通过new关键字来完成的。这种方式导致类与类之间的耦合度过高,使得代码难以维护和扩展。

2、IOC通过引入一个专门的容器(IoC容器)来管理对象的生命周期和依赖关系。容器负责创建对象,并通过配置文件或注解来指定对象之间的依赖关系。当需要使用某个对象时,只需从容器中获取即可,而无需关心对象的创建和依赖关系的建立。

3、因此,IOC实现了控制权的反转:将对象的创建和依赖关系的控制权从对象本身转移到IoC容器。这降低了类与类之间的耦合度,提高了代码的可维护性和可扩展性。

AOP(面向切面编程)原理:

1、AOP是面向对象编程(OOP)的一种补充和完善,它主要用来解决一些系统层面上的问题,如日志、事务、权限等。

2、AOP的基本思想是将非核心业务代码(横切关注点)从业务逻辑代码中抽离出来,封装到切面类中进行管理。这样可以减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

3、AOP通过预编译方式和运行期动态代理方式来实现对目标方法的增强。在运行期,AOP框架会根据切面类中的定义,动态地将切面代码织入到目标方法的执行过程中。这种方式不需要修改目标方法的源代码,因此具有很好的灵活性和可扩展性。

4、AOP中的关键概念包括横切关注点、切面、连接点、通知等。横切关注点是指从目标对象中抽取出来的非核心业务代码;切面是封装了横切关注点的类;连接点是目标方法中的某个位置(如方法执行前、后或抛出异常时),通知则是切面中定义的要织入到连接点处的代码片段。