【面试题】谈谈你对IOC和AOP的理解

本文介绍了Spring框架中的IoC(控制反转)设计思想,如何通过XML或注解简化对象创建,并概述了AOP(面向切面编程)的概念,包括切面、通知、连接点和织入。AOP展示了如何在不改动源代码的情况下添加横切关注点,如事务管理和日志管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:IOC的理解

IoC(Inverse of Control:控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IOC思想是基于IOC容器来完成的,IOC容器底层就是对象工厂(BeanFactory接口)。IOC的原理是基于xml解析、工厂设计模式、反射来实现的。 IoC 容器实际上就是个Map(key,value)Map 中存放的是各种对象。

通俗易懂的一句话结论:之前需要我们自己手动new对象的,但是我们现在不需要反复去new对象了,而是把new对象的主动权交给IOC容器,我们什么时候用什么时候取就可以了。

随着技术越来越先进,在Spring原生中我们觉得xml文件中配置还是有点麻烦,后来就有了springboot内部集成了这些功能,我们直接一个注解就可以了,方便了很多。

二:AOP的理解

AOP(Aspect-Oriented Programming:面向切面编程)AOP代表的是一个横向的关系,剖开对象的内部,并且把影响多个类的共同行为抽取出来,作为公共模块(叫做切面Aspect),然后再通过织入的方式把这个切面放进去。理解来说:就是能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

通俗易懂的一句话结论:就是不通过修改源代码方式,在主干功能里面添加新功能。

AOP底层是通过动态代理来实现的,同时有JDK动态代理和CGLIB动态代理两种方式:

        1.有接口的情况,使用 JDK 动态代理,即创建接口实现类代理对象,增强类的方法。

        2.没有接口的情况,使用 CGLIB 动态代理,即创建子类的代理对象,增强类的方法。

AOP的专业术语

        1.Advice (增强/通知) 表示需要扩展的功能,所在的类叫做增强类/通知类。

        2.JoinPoint(连接点)程序执行的某个特定位置

        3.PointCut(切入点)AOP 通过切点来定位特定的连接点

        4.Aspect(切面)切面由切点和增强组成,他既包含横切的定义,也包括了连接点的定义。 springAOP就是负责实施切面的框架,他将切面定义为横切逻辑织入到切面所指定的连接点。

        5.织入(weaving) 就是把Advice添加到目标类的连接点的过程

        6.目标对象 顾名思义:要增强到具体的对象

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值