SpringBoot SpringBoot 原理篇 1 自动配置 1.15 自动配置原理【1】

news2024/11/30 10:35:52

SpringBoot

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

SpringBoot 原理篇

文章目录

      • SpringBoot
      • SpringBoot 原理篇
      • 1 自动配置
        • 1.15 自动配置原理【1】
          • 1.15.1 看源码了
          • 1.15.2 @Import({AutoConfigurationPackages.Registrar.class})

1 自动配置

1.15 自动配置原理【1】

1.15.1 看源码了

依赖一个程序来看,

package com.dingjiaxiong;

import com.dingjiaxiong.bean.CartoonCatAndMouse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Import;

/**
 * ClassName: App
 * date: 2022/10/25 13:03
 *
 * @author DingJiaxiong
 */

@SpringBootApplication
@Import(CartoonCatAndMouse.class)
public class App {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(App.class);

        CartoonCatAndMouse bean = context.getBean(CartoonCatAndMouse.class);
        bean.play();
    }

}

运行结果

在这里插入图片描述

OK, 结果不重要

整个程序的开始

@SpringBootApplication

这个注解,点击进去看看

在这里插入图片描述

可以看到它是若干个注解的组合注解

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}

看这三个

在这里插入图片描述

意思就是上面那个是下面3个的合体

点进第一个 SpringBootConfiguration

在这里插入图片描述

又看@Configuration 里面

在这里插入图片描述

主要看这个

然后@Indexed

在这里插入图片描述

再看@EnableAutoConfiguration 【自动配置的开关】

点进去

在这里插入图片描述

主要就是这两个

在这里插入图片描述

看看@ AutoConfigurationPackage

在这里插入图片描述

再看@ComponentScan

在这里插入图片描述

点进去

在这里插入图片描述

基本到头

在这里插入图片描述

经过老师的勾勾选选

在这里插入图片描述

最后剩了俩

在这里插入图片描述

1.15.2 @Import({AutoConfigurationPackages.Registrar.class})

点进Registrar

在这里插入图片描述

这个类的功能就是能够按照BeanDefinition 的形式去定义bean ,并且分情况处理

这一节太难做笔记了…

在这里插入图片描述

对于这个方法进行断点调试

在这里插入图片描述

可以看到这个东西计算出来是我当前的包名

在这里插入图片描述

现在这个方法貌似是获取了我的包

在这里插入图片描述

原因就在于现在我的程序现在在com.dingjiaxiong 包下,这个程序作为整个应用的入口,它需要扫描它所在的包和其子包【扫哪儿就是这样得到的】

所以,@Import({AutoConfigurationPackages.Registrar.class}) 这个东西设置当前配置所在的包作为扫描包,后续要针对当前的包进行扫描【确认包信息】

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

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

相关文章

初识图学习

初识图学习 一、简单图的基础 什么是图 七桥问题的定义是:一个步行者怎样才能不重复,不遗漏的一次走完七座桥。最后回到出发点。 当年,大数学家在解答七桥问题的同时,也开创了数学的一个新分支图论。 可以毫不夸张的说&#xff…

半小时制作简单版澳大利亚导游地图,太简单了,你也可以

目录 1 前言 2 QQ扫码注册一个账号 3 编辑景区 3.1 新建一个景区 3.2 增加景点 4 预览 5 申请管理员审核 6 看一下发布后的效果 1 前言 不少景区为了提升游客旅游体验,需要制作自己的导游地图,游客扫一下二维码就可以看到景区全貌和景点介绍。制作这…

销售词汇Sell In、Sell Through、Sell Out辨析

原文出处:https://zhuanlan.zhihu.com/p/89563704 销售的过程其实是一个货物和资金双向流动的过程,货物从厂家流向消费者,资金从消费者流向厂家。 但是大多数情况下,厂家是没办法直接把货物卖给消费者的,或者说厂家是没…

虚拟机安装openEuler/MobaXterm工具登录系统

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

一个用C#开发的操作系统的开源项目

自从C#的AOT编译机制发布以来,有趣的项目越来越多,今天给大家推荐一个开源项目,用C#开发的64位操作系统。 文章目录项目简介项目源码开发环境虚拟机与裸机硬件支持功能列表完善的编译、安装文档操作系统界面项目地址项目简介 这是一个使用.N…

SpringBoot SpringBoot 原理篇 2 自定义starter 2.2 IP计数业务功能开发【自定义starter】

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇2 自定义starter2.2 IP计数业务功能开发【自定义starter】2.2.1 大概看看别人…

阿里云服务器安装mysql8

1. 安装前准备 查看是否安装: rpm -qa | grep mysql移除不想要的版本: yum remove 名称查找关于mysql的所有文件(配置文件) find / -name mysql ##或者 whereis mysql删除配置文件 rm -rf 文件最后需要注意的是:卸载后…

配置iSCSI实现Linux的远程块存储

文章目录一 名词解释二 需求三 环境准备四 搭建流程1 服务端准备硬盘并分区2 服务端安装软件包,并启动服务3 服务端 5个create 操作3-1 定义块设备,创建后备存储。3-2 为目标创建IQN3-3 创建一个ACL来控制特定的客户端访问3-4 为每个后备存储创建一个LUN…

基于C#的校园闲置物品共享系统的开发和实现(Asp.net+Web)

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1选题背景 1 1.1.1校园闲置物品共享系统的开发背景 1 1.1.2学生闲置物品交易活动的现状 1 1.2 校园闲置物品共享系统的研究方向和内容 1 1.2.1研究方向 1 1.2.2研究内容 2 1.3 校园闲置物品共享系统的设计目标 2 1.4 校园闲置物品共…

Visual Studio Code(vs code) 安装c# .net环境 solution

Visual Studio Code(vs code) 安装c# .net环境 solution 一、安装.net必要环境 1.安装环境 https://dotnet.microsoft.com/zh-cn/download 我这里选择的是 .net 6.0 ;版本 .net SDK x86 2.在vs code拓展 搜索.net 全名:.NET Core Extension Pack 作者&#xf…

操作系统的发展与分类

文章目录世界上第一台通用电子计算机操作系统的发展阶段1. 手工操作阶段(无操作系统的计算机系统)2. 批处理阶段:同时处理多道程序3. 分时操作系统(Time Sharing System)4. 实时操作系统(Real Time System&…

毫米波传感器原理介绍:测距

因为本篇是第一篇关于毫米波雷达传感器设备的介绍,我便多啰嗦两句。近几年随着无人驾驶等领域在国内的火热,做支撑实现无人驾驶的智能设备也多了起了,首当其冲的便是无人驾驶的眼睛“摄像头”,同样作为一种辅助手段的雷达技术也被…

HTMLDOM中的API之btoa和atob

btoa() btoa() 方法可以将一个二进制字符串(例如,将字符串中的每一个字节都视为一个二进制数据字节)编码为 Base64 编码的 ASCII 字符串。 示例: let encodedData window.btoa("Hello, world"); // 编码 let decode…

【C++笔试强训计划】第一天

遇事不决,可问春风,春风不语,即随本心 欢迎来到我的笔试强训计划专栏,这是计划正式开始的第一天。另外,我想说的是:博主本身水平有限,本专栏只作为学习笔记分享记录使用,对于一些题目…

Linux中如何获得进程的运行时堆栈

关于这个话题,我们一般是为了处理一下生产环境中程序出现死循环或者死锁等问题。我们一般想到的方法就是gdb attach上一个运行中的进程。但是这个需要手动交互。通过网上查找和实践,可以有以下几种选择: 第一种:pstack 进程ID …

【电商】管理后台--采购管理(执行层)

采购,从表面上看是公司花钱的部门,实则担负了寻找、管理供应商的重任,确保公司绝大部分的供应链成本可以保质、保量的完成。 现在很多电商企业,都不自己生产产品,产品的来源基本上都是从供应商那里采购,所以…

【服务器搭建】教程四:域名怎样进行备案?快来看~

前言 购买一台服务器,再来个域名,搭建一个自己的个人博客网站,把一些教程、源码、想要分享的好玩的放到网站上,供小伙伴学习玩耍使用。我把这个过程记录下来,想要尝试的小伙伴,可以按照步骤,自己…

你好,法语!A2知识点总结(1)

1.语式及时态 语式: 1.1直陈式: -直陈式现在时 1)动词变位: 以er结尾的动词为第一组动词 变位规则: 去er,得到词根,加上相应词尾 e es e ons ez ent 第二组动词变位 以ir结尾为第二组动词…

LeetCode 图解 | 141.环形链表

141.环形链表题目描述思路分析快慢指针思想代码实现题目描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内…

Nuxt 3.0.0正式发布,集成Element Plus和Ant Design Vue脚手架

发布说明 Nuxt 是使用简便的 Web 框架,用于构建现代和高性能的 Web 应用,可以部署在任何运行 JavaScript 的平台上。 Nuxt 3.0 11天前正式发布了稳定版,3.0 基于 Vue 3,为 TypeScript 提供了 “一等公民” 支持,并进行…