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

news/2024/11/29 1:50:04/

文章目录

  • 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.ppmy.cn/news/30379.html

相关文章

【Linux】-- 基本指令

目录 用户管理 adduser passwd userdel pwd ls指令 -l -a -d -F -r -t -R -1 which alias ll ls -n cd cd - cd ~ touch -d stat mkdir -p rmdir rm -r -f man cp ​编辑 -r -f mv cat -n tac more less -N head tail | 管道 dat…

Android Compose——一个简单的Bilibili APP

Bilibili移动端APP简介依赖效果登录效果WebView自定义TobRow的Indicator大小首页推荐LazyGridView使用Paging3热门排行榜搜索模糊搜索富文本搜索结果视频详情合集信息Coroutines进行网络请求管理,避免回调地狱添加suspendwithContextGit项目链接末简介 此Demo采用A…

koa-vue的分页实现

1.引言 最近确实体会到了前端找工作的难处,不过大家还是要稳住心态,毕竟有一些前端大神说的有道理,前端发展了近20年,诞生了很多leader级别的大神,这些大神可能都没有合适的坑位,我们新手入坑自然难一些&am…

hive真实表空间大小统计

1. 问题 如果是采用hdfs上传加载的表、或者是flume直接写hdfs的表空间通常看hive的属性是不准确的。 2. 思路 为了使结果更精确,我们直接使用linux下命令统计hive仓库目录下的每个表对应的文件夹目录占用空间的大小。 3. 解决方法 这里建立三层表结构 ods: 原始…

Cadence Allegro 导出Component Pin Report详解

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1,概述2,Component Pin Report作用3,Component Pin Report示例4,Component Pin Report导出方法4.1,方法14.2,方法2B站关注“硬小二”浏览更多演示视频 <

看完这篇入门性能测试

几十万人同时进入某媒体直播间&#xff0c;造成流量激增从监控上可以看出&#xff0c;QPS到达某峰值后&#xff0c;部分进入直播间即调用的接口&#xff08;这类接口属于高并发接口&#xff0c;在短时间内承载非常高的QPS&#xff09;以及对应接口的下游&#xff0c;均出现了非…

三个案例场景带你掌握Cisco交换机VLAN互通

VLAN间路由的方式现在主流的组网主要是依靠三层交换机通过配置SVI接口【有的厂商叫VLANIF接口】&#xff0c;当然也有比较小型的网络&#xff0c;它就一个出口路由器可管理的二层交换机&#xff0c;还有一种更加差的&#xff0c;就是出口路由一个可管理的二层交换机&#xff0c…

JavaScript Math 算数对象

文章目录JavaScript Math 算数对象Math 对象Math 对象属性Math 对象方法算数值算数方法JavaScript Math 算数对象 Math&#xff08;算数&#xff09;对象的作用是&#xff1a;执行常见的算数任务。 Math 对象 Math&#xff08;算数&#xff09;对象的作用是&#xff1a;执行普…