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知识库 -> Spring学习——IOC -> 正文阅读

[Java知识库]Spring学习——IOC

一、IOC控制反转

使用对象是由主动new产生对象,转化为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转

  • 业务层要想使用数据层的对象,以前都是自己new
  • 现在自己不new 了,交给外部来创建对象
  • 外部旧反转控制了数据层对象的创建权

Spring 提供了一个容器,IOC容器,用来充当思想中“外部”


二、DI依赖注入

在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

  • 业务层要使用数据层的对象,以前都是自己new
  • 现在自己不new 了,交给IOC容器来注入进来

三、AOP

AOP:面向切面编程

作用:在不惊动原始设计的基础上为其进行功能增强

AOP工作流程

  • Spring容器启动
  • 读取所有切面配置中的切入点
  • 初始化bean
  • 获取bean执行方法

AOP核心概念

  • 目标对象(Target):原始功能去掉共性功能对应的类产生的对象,也可称为原始对象
  • 代理(Proxy):目标对象无法直接完成功能,需要对其进行功能回填,通过原始对象的代理对象实现

AOP切入点表达式:

  • 语法格式:动作关键字(访问修饰符 返回值 包名.类名/接口名.方法(参数类型))异常名
execution(void com.demo.dao.impl.BookDaoImpl.update())

execution(public User com.demo.service.UserService.findById(int))

通配符:

  • *? 单个独立的任意符号:可以独立出现,也可以作为前缀或后缀的匹配符出现
execution(public * com.demo.*.UserService.find*(*))

// 匹配com.demo包下的任意包中的UserService类或接口中所有find开头的带有一个参数的方法
  • ?..? ?多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写
execution(public User com..UserService.findById())
// 匹配com包下任意包中的UserService类或接口中所有名称为findById的方法
  • 专用于匹配子类类型
execution(* *..*Service+.*(..))
// *Service+ 表示所有以Service结尾的接口的子类

?


AOP通知类型:

  • 前置通知:追加功能到方法执行前
  • 后置通知:追加功能到方法执行后,不管方法执行的过程中有没有抛出异常都会执行
  • 返回后通知:追加功能到方法执行后,只有方法正常执行结束后才进行,如果方法抛出异常,返回后通知将不会被添加
  • 抛出异常后通知:追加功能到方法执行后,只有方法正常执行结束后才进行,如果方法抛出异常,只有方法抛出异常后才会被添加
  • 环绕通知:追加功能到方法执行的前后,它可以实现其他四种通知类型的功能。

AOP事务管理

  • 事务作用:在数据层保障一系列的数据库操作同成功同失败
  • Spring事务作用:在数据层或业务保障一系列的操作的数据库操作同成功同失败
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-25 11:32:41  更:2022-05-25 11:33:45 
 
开发: 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年11日历 -2024/11/23 19:49:49-

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