在java面试中,如果我们被问及Spring框架的相关问题,那么一定避不开对Spring中的IOC和AOP的理解和使用,本文就简单谈论对于Spring中IOC和AOP的理解。

一、IOC的理解

1.1   IOC的概念与原理

IOC,即控制反转,把对象的创建、初始化、销毁交给 Spring 来管理,而不是由开发者控制,实现控制反转。IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂(BeanFactory 接口)。IOC的原理是基于xml解析、工厂设计模式、反射实现的。使用IOC可以降低代码的耦合度。

1.2   Spring 提供 IOC 容器实现两种方式

(1)BeanFactory:IOC 容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用。
在加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
(2)ApplicationContext:BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人
员进行使用。在加载配置文件时候就会把在配置文件对象进行创建
1.3   IOC 操作 Bean 管理
        IOC操作Bean管理有两种形式,一种是基于xml方式,另一种是基于注解方式。
基于xml方式的Bean管理,Spring主要提供了<bean><property>等标签。
基于注解方式的Bean管理,Spring主要提供了@Component  @Service  @Controller   @Repository等注解。

二、AOP的理解

2.1   AOP的概念

(1)AOP(面向切面编程),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得
业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
(2)通俗来说,就是不通过修改源代码方式,在主干功能里面添加新功能。

2.2   AOP的底层原理

AOP底层是使用动态代理来实现的,这里有两种情况的动态代理:

① 有接口的情况,使用 JDK 动态代理
即创建接口实现类代理对象,增强类的方法。
② 没有接口的情况,使用 CGLIB 动态代理
即创建子类的代理对象,增强类的方法。

2.3   AOP的专业术语

① 连接点:类里面可以被增强的方法,这些方法被称为连接点。

② 切入点:实际被真正增强的方法,称为切入点。

③ 通知(增强):(1)实际增强的逻辑部分称为通知(增强)

(2)通知有多种类型:前置通知、后置通知、环绕通知、异常通知、最终通知

④ 切面:把通知应用到切入点的过程,称为切面。

2.4   AOP的操作

① Spring 框架一般都是基于 AspectJ 实现 AOP 操作 ,AspectJ 不是 Spring 的组成部分,独立于 AOP 框架,一般把 AspectJ 和 Spirng 框架一起使用,进行 AOP 操作。
② 基于 AspectJ 实现 AOP 操作
(1)基于 xml 配置文件实现
(2)基于注解方式实现
③ 在项目中引入 AOP 的相关依赖,主要有:aop、cglib、aspectj、aopalliance等依赖。
④ 切入点表达式
(1)切入点表达式作用:明确对哪个类里面的哪个方法进行增强。
(2)语法结构: execution([权限修饰符] [返回类型] [类全路径] [方法名称]([参数列表]) )

Spring框架:谈谈对IOC和AOP的理解相关推荐

  1. Spring框架的灵魂IOC和AOP

    2019独角兽企业重金招聘Python工程师标准>>> 关键词 名称 模式 实现方式 IOC 依赖注入或控制反转 工厂模式 sessionfactory注入 AOP 面向切面编程 代 ...

  2. 面试官:谈谈你对IOC和AOP的理解及AOP四种实现方式

    目录 一.IOC与AOP介绍 二.实现AOP的四种方式 方式1:基于经典代理来实现 方式2:使用Spring AOP的API接口 方式3:自定义类来实现AOP 方式4:基于注解实现 一.IOC与AOP ...

  3. Spring框架两大核心特征的基本理解

    Spring框架的两大核心特征:AOP和IoC IoC(控制反转)是Spring的一个容器,他不是一种技术,而是一种思想,依旧是基于面向对象编程的.它能指导我们怎么样设计出松耦合.更优良的程序. 简单 ...

  4. IOC和AOP概念理解

    IOC和AOP概念理解总结: IOC:控制反转 是一种降低对象之间耦合关系的设计思想,面试的时候最好能说出来个例子,加深理解.例子:租房子,以前租房子需要一个房子一个房子找,费时费力,然后现在加入一个 ...

  5. 谈谈自己对Spring中IOC和AOP的理解

    Spring框架的核心思想主要是IOC和AOP的思想 IOC IOC概念 Spring中的IOC AOP AOP概念 百度百科的解释 个人理解 AOP思想 IOC IOC概念 所谓IOC即 Inver ...

  6. Spring的IoC与AOP的理解

    1.Spring它到底是什么? Spring是一个开源的Java应用程序开发框架,为了解决企业应用开发的复杂性而创建的.   在spring中,它会认为一切Java类都是资源,而资源就是Bean,容纳 ...

  7. 请解释下Spring 框架中的IOC 容器?

    Spring 中的org.springframework.beans 包和org.springframework.context 包构成了Spring 框架IOC 容器的基础. BeanFactory ...

  8. Spring框架介绍和IOC介绍

    一.Spring简介 1.什么是Spring?作用有什么? Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的. Spring使用基本的JavaBea ...

  9. @select注解_SSM框架(十三):Spring框架中的IoC(3)新注解,完全摆脱xml文件

    spring中的新注解 1.Configuration 作用:指定当前类是一个配置类 细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以 ...

最新文章

  1. linux终端运行pytorch,Linux虚拟机测试pytorch运行
  2. 随机数据的构造与使用
  3. 快速排序,排序一亿数据用时14秒
  4. Unity手游之路lt;七gt;角色控制器
  5. Qt文档阅读笔记-Q_CLASSINFO官方解析与实例
  6. 《统计学习方法》读书笔记
  7. 在 macOS 中如何使用「预览」批量调整图片大小?
  8. jsp连接mysql 菜鸟_在JSP中访问数据库大全
  9. ISO18000-6B和ISO18000-6C(EPC C1G2)标准的区别
  10. 极智开发 | Go 安装教程
  11. init: wait for '/dev/block/bootdevice/by-name/cache' timed out and took 5007ms【学习笔记】
  12. 【聚英云农】无线节水灌溉系统应用智慧农业
  13. SQL解决Error converting data type nvarchar to numeric.
  14. python下载酷狗音乐上的歌曲
  15. php实现图片液化,图像变形算法:实现Photoshop液化工具箱中向前变形工具
  16. Emgu CV 第一个实例
  17. Pippo已经不能只用超级来形容了
  18. 2020年河南科技大学892西方经济学考研真题题库等资料汇总
  19. 交换机进阶配置 、 路由器组网 、 企业网架构
  20. husky的仿真建图和导航

热门文章

  1. css3小鸡从鸡蛋破壳而出动画js特效
  2. 小学用计算机画图单元教学要求,小学电脑绘画教学计划
  3. Result Maps collection already contains value for com.framework.mapper.UserMapper.xml
  4. WTM(ASP.NET Core)使用SignalR,后台网页接收实时消息通知
  5. java数据结构YZP专栏-----链表
  6. php小程序 跳一跳,微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
  7. 华为的型号命名规则_华为5G新机获3C认证!充电功率10W可能是千元机
  8. 数据爬虫爬数据时常遇到的问题
  9. STM32输出 PWM频率 占空比 连续可调~~
  10. 机顶盒平台的字幕数据格式分析及其显示实现