SpringBoot With IoC,DI, AOP,自动配置

news2024/11/25 21:31:34

文章目录

  • 1 IoC(Inverse Of Controller)
  • 2 DI(Dependency Injection)
  • 3 AOP(面向切面编程)
    • 3.1 什么是AOP?
    • 3.2 AOP的作用?
    • 3.3 AOP的核心概念
    • 3.4 AOP常见通知类型
    • 3.5 切入点表达式
  • 4 自动配置
    • 4.1 简述:SpringBoot自动配置的原理
    • 4.2 源码跟踪

说明:IoC、DI均为软件工程中思想,致力提高“高内聚,低耦合”的软件设计思路。

1 IoC(Inverse Of Controller)

什么是IOC?(Inverse Of Controller)控制反转,把对象的创建权(new对象), 反转为 Spring容器管理,IOC创建的对象称之为Bean对象

1.1 声明bean的注解?(即把对象放入容器中的注解)

注解说明
@Component不属于以上三类时,用此注解
@Controller标注在控制层类上
@Service标注在业务类上
@Repository标注在数据访问层类上

2 DI(Dependency Injection)

什么是DI?(Dependency Injection)依赖注入,给容器中bean的属性赋值,常用使用方式,使用@Autowired注解声明在需要注入的类上,此时就会去spring容器中寻找Bean对象

2.1 依赖注入的注解?

注解说明
@Autowired按照类型注入
@Qualifier按照名称注入 要和@Autowired搭配使用
@Resource按照名称注入 = @Autowired + @Qualifier

3 AOP(面向切面编程)

3.1 什么是AOP?

面向切面编程

3.2 AOP的作用?

在不改变原始代码的基础上进行功能增强

3.3 AOP的核心概念

名词解释
连接点所有可以进行功能增强的方法都是连接点
切入点进行了功能增强的方法就是切入点
通知共性功能
切面切入点 + 通知
目标对象通知所应用的对象就是目标对
切入点表达式指定哪些方法是切入点

3.4 AOP常见通知类型

通知类型解释
@Before前置通知
@After后置通知
@Around环绕通知
@AfterReturning返回后通知
@AfterThrowing异常后通知

3.5 切入点表达式

写法一:@PointCut("execution(访问修饰符 返回值 包名.类名.方法名(参数))")

  • 通配符:
    * 单个或半个任意符号 多用于模糊匹配
    .. 多个连续任意符号 多用于参数省略或包名省略

写法二:@PointCut("@annotation(注解的全路径类名)")

  • 通过连接点对象获取目标方法的信息
    获取类名:joinPoint.getTarget().getClass().getName()
    获取方法名:joinPoint.getSignature().getName()
    获取参数:joinPoint.getArgs()
    执行目标方法:joinPoint.proceed()
    获取返回值:Object result = joinPoint.proceed()

4 自动配置

4.1 简述:SpringBoot自动配置的原理

在Springboot启动的时候,会用到核心注解@SpringBootApplication,这个注解中有一个自动配置注解@EnableAutoConfiguration,自动配置注解会自动寻找spring.factories 和 AutoConfiguration.imports 文件中的xxxAutoConfiguration自动配置类,在自动配置中使用@Bean注解把一些配置类和bean对象放到了Spring容器中,就完成了自动配置

  • 自动配置注解:@EnableAutoConfiguration
  • 自动配置文件:spring.factories 和 AutoConfiguration.imports 文件
  • 自动配置类:xxxAutoConfiguration(@Bean).
注解说明
@Bean告诉方法,产生一个Bean对象并交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后被放在Spring容器中。

4.2 源码跟踪

spring.factories
Spring Boot 中的SPI 机制(Java SPI 机制):为某个接口寻找服务的实现的机制,类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制很重要。

  • 当需要实现SDK 或Sring boot starter 给别人调用,使用Factories机制(Spring Boot 中的SPI 机制)可以让SDK或Stater的使用只需很少或不需要进行配置,只需在服务中引入我们的Jar包就即可。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/392162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络的166个概念 你知道几个第七部分

计算机网络传输层 可靠数据传输:确保数据能够从程序的一端准确无误的传递给应用程序的另一端。 容忍丢失的应用:应用程序在发送数据的过程中可能会存在数据丢失的情况。 非持续连接:每个请求/响应会对经过不同的连接,每一个连接…

vue3+ts:约定式提交(git husky + gitHooks)

一、背景 Git - githooks Documentation https://github.com/typicode/husky#readme gitHooks: commit-msg_snowli的博客-CSDN博客 之前实践过这个配置,本文在vue3 ts 的项目中,再记录一次。 二、使用 2.1、安装 2.1.1、安装husky pnpm add hus…

python学习——【第三弹】

前言 上一篇文章 python学习——【第二弹】中学习了python中的运算符内容,这篇文章接着学习python中的流程控制语句。 流程控制指的是代码运行逻辑、分支走向、循环控制,是真正体现我们程序执行顺序的操作。流程控制一般分为顺序执行、条件判断和循环控…

从源码的角度告诉你 spark是怎样完成对文件切片

目录 1.说明 2.怎样设置默认切片数 2.1 RDD默认切片设置 2.2 SparkSQL默认切片设置 3. makeRDD 切片原理 4. textFile 切片原理 4.1 切片规则 4.2 怎样设置切片大小 4.3 测试代码 5.hadoopFile 切片原理 5.1 说明 5.2 切片规则 5.3 怎样设置切片大小 5.4 代码测试…

【算法经典题集】前缀和与数学(持续更新~~~)

😽PREFACE🎁欢迎各位→点赞👍 收藏⭐ 评论📝📢系列专栏:算法经典题集🔊本专栏涉及到的知识点或者题目是算法专栏的补充与应用💪种一棵树最好是十年前其次是现在前缀和一维前缀和k倍…

【我的Android开发】AMS中Activity栈管理

概述 Activity栈管理是AMS的另一个重要功能,栈管理又和Activity的启动模式和startActivity时所设置的Flag息息相关,Activity栈管理的主要处理逻辑是在ActivityStarter#startActivityUnchecked方法中,本文也会围绕着这个方法进进出出&#xf…

Gopro卡无法打开视频恢复方法

下边来看一个文件系统严重受损的Gopro恢复案例故障存储: 120G SD卡故障现象:客户正常使用,备份数据时发现卡无法打开,多次插拔后故障依旧。故障分析:Winhex查看发现0号分区表扇区正常,这应该是一个exfat格式的文件系统,但是逻辑盘…

【单目3D目标检测】MonoDDE论文精读与代码解析

文章目录PrefacePros and ConsAbstractContributionsPreliminaryDirect depth estimationDepth from heightPespective-n-point(PnP)PipelineDiverse Depth EstimationsRobust Depth CombinationOutput distributionSelecting and combining reliable de…

JVM-从熟悉到精通

JVM 机器语言 一个指令由操作码和操作数组成 方法调用等于一个压栈的过程 栈有 BP寄存器 和 SP寄存器来占用空间 BP -> Base Point 栈基址(栈底)SP -> Stack Point 栈顶 字节序用于规定数据在内存单元如何存放,二进制位的高位和低…

计算机组成原理|第二章(笔记)

目录第二章 计算机的发展及应用2.1 计算机的发展史2.1.1 计算机的生产和发展2.1.2 微型计算机的出现和发展2.1.3 软件技术的兴起与发展2.2 计算机的应用2.3 计算机的展望上篇:第一章:计算机系统概论 第二章 计算机的发展及应用 2.1 计算机的发展史 2.1.…

基于半车悬架的轴距预瞄与轴间预瞄仿真对比

目录 前言 1. 半车悬架模型 2.轴距预瞄(单点预瞄)和轴间预瞄(两点预瞄)原理与仿真分析 2.1轴距预瞄(单点预瞄) 2.1.1预瞄原理 2.2.轴间预瞄(两点预瞄) 2.2.1预瞄原理 2.3仿真分析 3.总结 前言 对于悬架而言,四个车轮实际的输入信息是受到前后延时以及左右相…

SpringCloud:Feign的使用及配置

目录 Feign的使用及配置 1、Feign替代RestTemplate 2、使用Fegin步骤 3、自定义配置 4、Feign使用优化 5、Feign的最佳实践方式 Feign的使用及配置 1、Feign替代RestTemplate RestTemplate方式远程调用的问题 问题: 1、代码可读性差,编程体验不同…

HTML基本概述

文章目录网站和网页浏览器的作用HTML标签元素注释乱码问题web系统是以网站形式呈现的,而前端是以网页形式呈现的。 网站和网页 网站(web site):互联网上用于展示特定内容的相关网页的集合。也就是说,一个网站包含多个…

【预告】ORACLE Primavera P6 v22.12 虚拟机发布

引言 离ORACLE Primavera P6 EPPM最新系统 v22.12已过去了3个多月,应盆友需要,也为方便大家体验,我近日将构建最新的P6的虚拟环境,届时将分享给大家,最终可通过VMWare vsphere (esxi) / workstation 或Oracle virtua…

SQL 窗口函数详解

SQL窗口函数详解 窗口函数的主要作用是对数据进行分组排序、求和、求平均值、计数等。 一、窗口函数的基本语法 <分析函数> OVER ([PARTITION BY <列清单>] ORDER BY <排序用列清单> [ROWS BETWEEN 开始位置 AND 结束位置])理解窗口函数的基本语法&#xff…

opencv校正图像

目录1、前言2、例程2.1、代码2.2、效果口罩说明书网页3、按步骤分析转灰度图降噪 Canny边缘检测膨胀&#xff08;可视具体情况省略&#xff09;轮廓检索选取角度1、前言 我们用相机拍照时&#xff0c;会因为角度问题造成拍歪&#xff0c;会影响图像的识别&#xff0c;这时就需…

【PyTorch】教程:torch.nn.Hardtanh

torch.nn.Hardtanh 原型 CLASS torch.nn.Hardtanh(min_val- 1.0, max_val1.0, inplaceFalse, min_valueNone, max_valueNone) 参数 min_val ([float]) – 线性区域的最小值&#xff0c;默认为 -1max_val ([float]) – 线性区域的最大值&#xff0c;默认为 1inplace ([bool]) …

ABP(ASP.NET Boilerplate)配置整合使用Mysql数据库

ABP默认是支持sqlserver数据库的&#xff0c;但是这并不影响使用其他数据库&#xff0c;稍微配置一下就行了&#xff01;很简单——————————— 一、 卸载原来存在Sql Server的依赖包 在程序包管理控制台输入&#xff0c;选择EntityFrameworkCore 然后执行删除包的命令…

基于intel x86+fpga智能驾驶舱和高级驾驶辅助系统硬件设计(二)

系统功能架构及各模块功能介绍 智能驾驶舱和高级驾驶辅助系统是一个车载智能终端嵌入式平台&#xff0c;系统是一个能够运行 虚拟化操作系统的软件和硬件的综合体。本文的车载主机包括硬件主控处理器、电源管理芯 片、存储设备、输入输出控制器、数字仪表系统系统、后座娱乐系统…

抖音怎么合理安排直播内容|辽宁千圣文化

抖音主播们可以利用直播的方式达到带货的底模&#xff0c;那么做主播的话&#xff0c;就要利用好抖音主播中心&#xff0c;很多抖音用户却表示找不到抖音主播中心&#xff0c;那么怎么去看呢&#xff1f;跟着辽宁千圣文化小编来一起看看吧&#xff01;如何成为一名合格的主播&a…