IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> ioc和aop -> 正文阅读

[Java知识库]ioc和aop

springIOC原理

  1. IOC(控制反转):依赖倒置原则的一种代码设计思路,将原来在代码里面需要实现的,对象创建,对象之间的依赖,反转给容器来帮忙实现,在启动tomacat时,根据基于注解的方式启动容器的类(启动类)下的包中所有符合规则和条件的类,初始化放在map集合中
  2. DI机制:在实际开发生产中,类和类之间有很多时候存在依赖关系,一个对象依赖另一个对象,把存在依赖关系的对象实例化的过程称之为:依赖注入
  3. SpringIOC容器通过xml,注解等其他方式配置类与类之间的依赖关系,完成对象的创建和依赖的管理注入
    设计模式:工厂模式
    核心:创建,管理,注 入,控制对象,springioc管理对象整体的生命周期

SpringIOC的设计初衷是什么

  1. 集中管理,实现类的课配置和易管理
  2. 降低类与类之间的耦合度
  3. 提升java应用程序的性能,减轻JVM的压力
  4. 让程序员更专注于业务上,而不是创建管理对象

** 谈谈对SpringIOC的理解和认识

SpringIOC框架是通过java语言开发出的一个框架,在没有spring框架之前,我们要调用类中方法或给属性赋值,都是new对象,spring内部提供IOC机制,他的核心是,把对象创建的过程,交给容器(MAP)来进行管理的一种机制,将传统的创建管理对象的过程更换成交由容器创建管理对象的过程称之为IOC控制反转的过程,通过xml或注解(@Resources()@Autowired)的方式进行注入,管理bean到容器中
** SpringMVC接收请求中IOC的流程

  1. 发送一个请求http://localhost8080/xxx/mm
  2. 经过–SpringMVC中的Servlet DispatcherServlet
  3. 根据路由在springioc容器中找到/xxx/mm对应映射(requestmapping)–对应的类
  4. 根据类的名字找到对应ioc对象的实例
  5. 然后根据映射(requestmappeing)找到执行的方法

在这里插入图片描述
在这里插入图片描述

springioc容器的bean是单例的吗?

springioc中的单例和单例设计模式不一样,
他们的共同点事:在内存空间中只有一份,思想是一样的
springioc的bean的单例就是一个Map容器,因为这个Map是一个全局的变量。

SpringAOP

在开发中,很多时候,有一些业务逻辑非常通用(接口登录校验),或者开发很多业务会执行处理附属业务(保存日志)等
AOP:当对象执行方法的时候,会对对象执行的方法进行横切面的拦截处理,并对其方法的业务进行织如逻辑增强处理
总结:

  1. AOP是面向切面编程的一种思想,它是指对象执行方法的时候,对执行的方法执行逻辑增强
  2. AOP是采用jdk动态代理和cglib动态代理切换拦截处理
  3. 执行的对象必须是:代理对象,代理对象产生必须使用jdk的动态代理和cglib来产生
  4. 有了代理对象,使用切面类来进行增强逻辑处理,切面类必须实现InvocationHandler接口,覆盖invoke方法,这个方法就是执行代码增强的方法

好处:

  1. 降低耦合度
  2. 使系统容易扩展
  3. 提高代码的复用性

如何拦截

  • jdk动态代理(必须接口)
    • 在平时的开发中,如果你有IUserService,进行子类的实例化的时候,其实就是使用jdk动态代理,然后通过IOC的DI机制完成注入。默认是jdk动态代理
  • cglib动态代理(不需要接口)
    • 在平时开发中,如果没有接口IUserService,进行子类的实例化的时候,其实就是使用cglib动态代理,然后通过IOC的DI机制完成注入

AOP基本概念

  • 连接点:具体执行的方法
  • 切入点:所需要拦截方法的集合
  • 通知:具体处理业务的位置和时间点,切面类的invoke方法
  • 切面:通知和切入点的结合(切面类)
  • 织入:把对象对象执行的方法和通知关联的过程,代理对象执行方法,要去通知哪个方法执行增强逻辑
  • 代理:AOP代理可以用JDK动态代理或CGLIB代理实现
  • 目标对象:具体的:orderServiceImpl

当请求传递发现方法上有注解会将对象变为代理对象,代理对象执行过程中会进入切面类进行逻辑增强处理,在这个过程中会有很多的切点,连接点,给通知使用,通知回合连接点进行关联匹配,在通知里面进行增强处理

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章           查看所有文章
加:2021-10-19 11:44:20  更:2021-10-19 11:47:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/20 0:33:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码