Java面试经常问到IOC和AOP的原理面试,下面我就来详解IOC和AOP的原理面试@mikechen
IOC原理
IOC,全称是Inversion of Control,也就是IOC控制反转的意思。
IOC是一种编程思想或设计模式,它的核心思想是将对象的创建、组装和管理的控制权交给一个容器,而不是由对象自己进行创建和管理。
在没有IOC容器之前,传统应用程序都是由我们在类内部主动创建依赖对象。
如下图所示:
这种方式,从而导致类与类之间高耦合难于测试,于是后面就了IOC容器。
如下图所示:
上图引入了IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,也就是IOC来驱动。
在IoC中对象不再负责自己的创建和管理,而是被容器创建和管理,这就是IOC控制反转的核心思想。
简单来说,IOC就是通过外部容器来管理对象之间的关系,将对象与对象之间的依赖关系由程序员自己手动设置变成由IOC容器来自动完成,从而达到了代码解耦的目的。
AOP原理
AOP,英文全称是Aspect Oriented Programming,翻译过来就是面向切面编程。
在AOP中我们通过定义横切关注点和切面来实现对系统的功能进行增强或修改,而不是直接修改原有代码。
比如:Spring AOP面向切面编程,可以实现、日志记录、事务管理、权限验证等功能的增强。
如下图所示:
AOP的实现原理主要包括以下几个方面:
- 切入点:AOP中,我们需要定义一个或多个切入点,即在哪些位置执行切面代码。
- 切面:切面是一个横切关注点,它是对切入点的一种响应。切面可以包括前置通知、后置通知、异常通知和环绕通知等。
- 连接点:连接点是在程序执行过程中,符合切入点的所有位置,也就是可以被切面拦截的所有方法。
- 通知:通知是指在特定连接点上执行的代码。根据不同的连接点和切面,通知可以分为前置通知、后置通知、异常通知和环绕通知等。
- 切面优先级:当多个切面都对同一个连接点进行拦截时,我们需要定义一个切面优先级,以决定拦截的顺序。
AOP是通过将程序中的功能分解成不同的关注点和切面,从而实现对程序功能的增强和修改。
以上就是ioc和aop的原理面试详解,更多内容请查看:IOC控制反转详解和Spring AOP全面详解
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》