SpringBoot SpringBoot 原理篇 1 自动配置 1.18 自动配置原理

news2024/11/29 4:31:00

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 原理篇

文章目录

      • SpringBoot
      • SpringBoot 原理篇
      • 1 自动配置
        • 1.18 自动配置原理
          • 1.18.1 变更自动配置
          • 1.18.2 小结
          • 1.18.3 总结

1 自动配置

1.18 自动配置原理

1.18.1 变更自动配置

既然这个自动配置这么好用,自己也想搞这种自动配置的东西,可以实现吗?

【答案是当然的】

看看MP 的自动配置类

在这里插入图片描述

点开META-INF

在这里插入图片描述

可以看到它也有这个东西

在这里插入图片描述

做自动配置方法其实很简单,就是在spring.factories 做配置就行了

【直接开干】

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.dingjiaxiong.bean.CartoonCatAndMouse

在这里插入图片描述

OK, 现在其实就已经完成了

修改一下运行程序

在这里插入图片描述

我现在不导入了,让它自动配置

在这里插入图片描述

我超!这也行

再整点儿花活儿

在这里插入图片描述

我现在给它加点条件,意思有redis ,我才被加载

@ConditionalOnClass({RedisOperations.class})

但是我在pom 文件中又把redis 依赖给注掉

在这里插入图片描述

很明显, 都红了,就不会自动配置了

这样看不出来效果,因为编译通不过了已经,恢复成全路径名

@ConditionalOnClass(name = "org.springframework.data.redis.core.RedisOperations")

再次执行运行类

在这里插入图片描述

没毛病,这次就加载不到了,自动配置失败

如果把坐标放开

在这里插入图片描述

这样就又加载到了

这是加,那么问题又来了,现有的我们能不能把它去了【当然】

跟老师一样,

在这里插入图片描述

就去你

修改配置文件

在这里插入图片描述

spring:
  autoconfigure:
    exclude: org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration

OK,再次运行,看看它还可以加载不

在这里插入图片描述

没毛病

这是在配置文件中写

也可以在启动类上写

例如,

在这里插入图片描述

我现在还想把它 也排除掉

@SpringBootApplication(excludeName = "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration")

在这里插入图片描述

OK, 直接启动

在这里插入图片描述

肯定就没有加载了

OK,回顾一下

  • 自定义自动配置(META-INF/spring.factories)

在这里插入图片描述

  • 控制SpringBoot内置自动配置类加载

在这里插入图片描述

  • 变更自动配置:去除tomcat自动配置(条件激活),添加jetty自动配置(条件激活)

在这里插入图片描述

1.18.2 小结
  1. 通过配置文件exclude属性排除自动配置
  2. 通过注解@EnableAutoConfiguration属性排除自动配置项
  3. 启用自动配置只需要满足自动配置条件即可
  4. 可以根据需求开发自定义自动配置项
1.18.3 总结
  1. bean加载方式(8+)
  2. bean加载控制(编程 & 注解)
  3. bean依赖属性配置(Properties)
  4. 自动配置原理
  5. 变更系统自动配置(配置文件、注解属性)
  6. 添加自定义自动配置(META-INF/spring.factories)

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

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

相关文章

校园网站毕业设计,校园网站设计与实现,校园网站论文作品参考

功能清单 【后台管理员功能】 关于我们设置:设置学校简介、联系我们、加入我们、法律声明、学校详情 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信…

飞桨模型部署至docker并使用FastAPI调用(五)-WordPress展示页面

文章首发及后续更新:https://mwhls.top/4092.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 飞桨模型部署至docker并使用FastAPI调用目录框架搭建 测试…

关于图的学习

一、图的定义 图G由顶点集V和边集E组成,记为G (V, E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。若V { v1,v2,...,vn },则用 | V | 表示图G中顶点…

PyQt5可视化编程-布局管理

在一个GUI程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和PyQt5的layout类 1.绝对定位: 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个…

【Linux】网络编程基础

文章目录网络基础1.网络与操作系统的关系2.计算机网络发展3.协议3.1协议分层3.2OS七层模型3.3TCP/IP五层模型4.网络传输基本流程4.1数据包的封装和分用4.1.1报头和有效载荷4.2局域网的两台主机通信4.3跨网络的两台主机通信5.IP地址和MAC地址5.1IP地址5.2MAC地址5.3IP地址和MAC地…

XSCTF联合招新【真是阳间题】(MSIC+Crypto)

文章目录XSCTF联合招新【真是阳间题】(MSICCrypto)Step1:查看文件step2:操作流程关于Base64,Base32,Base16进制的区别方法:Base64:Base32:Base16:XSCTF联合招新【真是阳间题】(MSICC…

控制瑞芯微平台GPIO(输入、输出、电平读取)

控制瑞芯微平台GPIO(输入、输出)GPIO编号计算控制步骤输出高电平读取电平GPIO编号计算 GPIO编号 BANK * 32 GPIO_PIN GPION_MP N * 32 8 * (M -1) P 示例:GPIO7_C2 7 X 32 8 X (3-1) 2 242 GPIO2_A1 2 X 32 8 X (1-1) 1 73 A对…

IO流~File

File File类概述和构造方法 File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通…

【PyTorch深度强化学习】DDPG算法的讲解及实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留言留下QQ~~~ 一、DDPG背景及简介 在动作离散的强化学习任务中,通常可以遍历所有的动作来计算动作值函数q(s,a)q(s,a),从而得到最优动作值函数q∗(s,a)q∗(s,a) 。但在大规模连续动作空间中,遍历所有动作是不…

Css3 2D转换 2D转换之移动tranlate

转换(transform)是css3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果。 转换你可以简单理解为变形。 移动:translate旋转:rotate缩放:scale 2D转换是改变标签在二维平面上的位置和形状的…

Spring - InstantiationAwareBeanPostProcessor 扩展接口

文章目录Preorg.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorInstantiationAwareBeanPostProcessor 注册过程源码分析postProcessBeforeInstantiation的执行时机源码解析使用场景 : 创建代理类Pre Spring Boot - 扩展接口一览 org.s…

AWS Academy LMS 考勤 - 教师

AWS Academy LMS 考勤 - 教师 在 AWS Academy LMS 教材使用 - 教师 说明了如何使用 AWS Academy LMS 中所提供的线上素材,而开始上课后,教师必须要去了解学生对于教材的实际使用状况,在这里介绍如何查看学生在各模块知…

Jsoup爬虫入门实战

一、Jsoup介绍 jsoup 是一款基于 Java 的HTML解析器,它提供了一套非常省力的API,不但能直接解析某个URL地址、HTML文本内容,而且还能通过类似于DOM、CSS或者jQuery的方法来操作数据,所以 jsoup 也可以被当做爬虫工具使用。 相关…

进程通信(2) ----- 信号

文章目录一、实验目的二、实验内容三、实验要求四、实验步骤及操作五、程序源码1. 信号发送 fkill.c2. 信号监控 mysignal.c一、实验目的 1.了解进程通信间的信号机制 2.掌握进程通信间的信号编程模型 二、实验内容 信号是通信量最小的一种进程间通信形式,也用于…

【Gradle】三、深入了解Gradle

这里写目录标题一、 Gradle项目的生命周期Initialization 阶段Configuration 阶段:Execution 阶段:二、settings.gradle 文件三、Task1、 案例四、Dependencies1、依赖的分类2、依赖的下载3、依赖的类型4、api与implementation的区别5、依赖冲突及解决方…

(二) Docker安装

Docker安装一、前提二、安装三、设置阿里云镜像加速四、分析Run底层原理五、Docker会比VM虚拟机快的原因一、前提 CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上, 要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Cen…

plot3D | 三维数据绘图(1):散点图、栅格图、透视图

专注系列化、高质量的R语言教程推文索引 | 联系小编 | 付费合集plot3D可以视作基础包graphcis的拓展包,用于多维数据的图形绘制。基础绘图系统里好像只有一个persp()函数与三维绘图有关,关于该函数的介绍见如下推文:基础绘图系统(…

【Hack The Box】linux练习-- Blunder

HTB 学习笔记 【Hack The Box】linux练习-- Blunder 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月21日🌴 &#x1f…

二、Robot Framework 对数据库的操作

Robot Framework 对数据库的操作2.1 DatabaseLibrary 库的使用1. 安装 DatabaseLibrary 库2. 测试套件中导入 DatabaseLibrary 库3. 安装 pure-PythonMySQL client library2.1.1 如何连接数据库2.1.2 如何断开数据库2.1.3 如何对数据库的表进行查询2.1.4 如何插入和删除数据2.1…

java EE初阶 — Thread类及常见方法

文章目录1.Thread 常见的构造方法2.Thread 几个常见的属性3.启动一个线程 - start()4.终止一个线程4.1 使用标志位来控制线程是否要停止4.2 使用 Thread 自带的标志位来进行判定5.等待一个线程 - join()6.获取当前线程引用7.休眠当前线程1.Thread 常见的构造方法 Thread() - 创…