前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring核心思想Ioc和Aop (面试)

Spring核心思想Ioc和Aop (面试)

作者头像
用户7630333
发布2023-12-07 18:55:46
850
发布2023-12-07 18:55:46
举报
文章被收录于专栏:look Javalook Java

Spring核心思想Ioc和Aop (面试)

注意: Ioc和Aop并不是Spring提出的,在Spring之前就已经存在,Spring只是在技术层面给这两个思想做了非常好的实现。

1 Ioc

1.1 下面谈谈你是怎么理解ioc的吧。

面试官: 下面谈谈你是怎么理解ioc的吧。 我:Inversion of Control (控制反转)。它只是一个技术思想,不是一个技术实现我:在传统的java开发中,bean的创建,管理一直是一个让人头疼的问题。 我:比如类A依赖于类B,通常会在类A中new一个B的对象。 我:在Ioc思想下,我们可以不用自己去new对象,而是由Ioc容器去帮助我们实例化对象并且管理它。我们需要使用某个对象,去Ioc容器中要即可。


1.2 为什么称Ioc叫做控制反转?

面试官: 为什么称Ioc叫做控制反转? 我:控制:指得是对象的创建。(实例化,管理)的权利。 我:反转:控制权而又交给外部环境了(spring框架、IoC容器)

image-20220814210817790
image-20220814210817790

1.3 Ioc解决了什么问题?

面试官: Ioc解决了什么问题? 我:IoC解决了对象之间的耦合问题我:比如我们在使用Dao对象的时候,有多个service需要用到Dao对象,那么我们硬编码在每个service中new多个Dao对象

image-20220814211317475
image-20220814211317475

1.41.3 IoC和DI的区别?

DI:Dependancy Injection(依赖注⼊)

面试官: IoC和DI的区别 我:我觉得 IOC和DI描述的是同⼀件事情,只不过⻆度不⼀样罢了

image-20220814211658826
image-20220814211658826

2 Aop

2.1 什么是AOP?

AOP: Aspect oriented Programming ⾯向切⾯编程/⾯向⽅⾯编程

面试官: 什么是AOP? 我:要说Aop,得先从OOP说起,OOP三大特征:封装,继承,多态。oop是⼀种垂直继承体系。

image-20220814212030916
image-20220814212030916

我:OOP编程思想可以解决⼤多数的代码重复问题,但是有⼀些情况是处理不了的,⽐如下⾯的在顶级⽗类 Animal中的多个⽅法中相同位置出现了重复代码,OOP就解决不了。 比如需要对接口的性能监控,OOP的思想,需要在每处需要监控的地方编写重复代码。

  • 横切逻辑 (简单来说,就是在业务代码之前,或者之前,或者环绕他们执行)
image-20220814212142280
image-20220814212142280

横切逻辑代码

image-20220814213046881
image-20220814213046881

横切逻辑代码存在什么问题: 横切代码重复问题 横切逻辑代码和业务代码混杂在⼀起,代码臃肿,维护不⽅便 AOP出场,AOP独辟蹊径提出横向抽取机制,将横切逻辑代码和业务逻辑代码分析

image-20220814213111363
image-20220814213111363

我:而利用Aop的思想可以完美的规避这些问题。

2.2 为什么叫做⾯向切⾯编程

「切」:指的是横切逻辑,原有业务逻辑代码我们不能动,只能操作横切逻辑代码,所以⾯向横切逻辑。() 「⾯」:横切逻辑代码往往要影响的是很多个⽅法,每⼀个⽅法都如同⼀个点,多个点构成⾯,有⼀个⾯的概念在⾥⾯

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring核心思想Ioc和Aop (面试)
    • 1 Ioc
      • 1.1 下面谈谈你是怎么理解ioc的吧。
      • 1.2 为什么称Ioc叫做控制反转?
      • 1.3 Ioc解决了什么问题?
      • 1.41.3 IoC和DI的区别?
    • 2 Aop
      • 2.1 什么是AOP?
      • 2.2 为什么叫做⾯向切⾯编程
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档