SpringBoot 学习(一)自动装配

本系列文章为【狂神说 Java 】视频的课堂笔记,若有需要可配套视频学习。

1.1 pom.xml

(1) 父工程( spring-boot-starter-parent

  • 核心依赖,静态资源过滤等配置。
  • 编写或导入 springboot 依赖时不需要指定版本号,继承父工程版本。

(2) 启动器( spring-boot-starter

  • springboot 的启动场景,功能场景。

  • 添加某功能对应的启动器依赖即可使用此功能。

  • springboot 的依赖前缀

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    

1.2 主程序

@SpringBootApplication
public class HelloApplication {public static void main(String[] args) {SpringApplication.run(HelloApplication.class, args);}
}

1.2.1 注解( @SpringBootApplication

  • @SpringBootConfiguration :SpringBoot 配置类

  • @EnableAutoConfiguration :自动装配

    • 自动装配流程

      • springboot 启动时从 spring.factories 获取目标类(组件)的全限定名,将其添加到容器。

        在这里插入图片描述

    • 配置仓库

      • spring.factories 中的所有配置类含 @ConditionalOnxxx 注解,只有满足此注解的所有条件,此配置才会生效。

      在这里插入图片描述

  • 结论

    • springboot 的自动配置是在启动时扫描并加载的。
    • 导入对应的启动器( starter ),自动装配就会生效。

1.2.2 main 方法

(1) SpringApplication
  • 判断此应用是普通 Java 项目还是 Web 项目。

  • 查找并加载所有可用的初始化器,设置到 initializers 中。

  • 查找所有应用程序监听器,设置到 listeners 中。

  • 推断并设置 main 方法的定义类,找到主类。

  • 查看类构造器。

    /*** 创建一个新的 SpringApplication 实例,用于加载应用程序上下文,该实例可以在调用 run 方法* 前自定义。* @param resourceLoader 资源加载器* @param primarySources bean 源* @see #run(Class, String[])* @see #setSources(Set)*/
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {this.resourceLoader = resourceLoader;Assert.notNull(primarySources, "PrimarySources must not be null");this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));this.webApplicationType = WebApplicationType.deduceFromClasspath();this.bootstrapRegistryInitializers = getBootstrapRegistryInitializersFromSpringFactories();setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));this.mainApplicationClass = deduceMainApplicationClass();
    }
    
(2) run() 方法
  • 启动应用监听器、获取装配环境参数等。

  • 执行流程

    在这里插入图片描述

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

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

相关文章

解答嵌入式和单片机的关系

嵌入式系统是一种特殊的计算机系统&#xff0c;用于特定任务或功能。而单片机则是嵌入式系统的核心部件之一&#xff0c;是一种在单个芯片上集成了处理器、内存、输入输出接口等功能的微控制器。刚刚好我这里有一套单片机保姆式教学&#xff0c;里面有编程教学、问题讲解、语言…

自学Mysql调优笔记

Mysql性能调优学习 预计十天完成14/day 1. 存储引擎 存储引擎是基于表的&#xff0c;而不是基于库的 SHOW ENGINES --展示所有存储引擎1.1 InnoDB DML操作遵循ACID模型&#xff0c;支持事务。 行鸡锁&#xff0c;提供并发访问性能。 支持外键约束&#xff0c;保证数据完…

大学毕业生应聘求职,应用MBTI职业性格测试

受到大环境的影响&#xff0c;各企业也是变的很不景气&#xff0c;但是这也正是给了求职者一个缓冲期。根据因果论&#xff0c;我始终觉得好事和坏事是交织在一起的&#xff0c;在某种程度上影响了我们的经济&#xff0c;但是过后&#xff0c;必定很迎来新的一波经济发展的狂潮…

Android.bp常用语法和预定义属性

介绍 Android.bp是Android构建系统中用于定义模块和构建规则的配置文件&#xff0c;它使用一种简单的声明式语法。以下是Android.bp的一些常见语法规则和约定&#xff1a; 注释&#xff1a; 单行注释使用//符号。 多行注释使用/和/包围。 和go语言相同 // 这是单行注释 /* 这是…

【二叉树】——链式结构(快速掌握递归与刷题技巧)

&#x1f4d9;作者简介&#xff1a; 清水加冰&#xff0c;目前大二在读&#xff0c;正在学习C/C、Python、操作系统、数据库等。 &#x1f4d8;相关专栏&#xff1a;C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d…

蓝桥杯 题库 简单 每日十题 day10

01 最少砝码 最少砝码 问题描述 你有一架天平。现在你要设计一套砝码&#xff0c;使得利用这些砝码 可以出任意小于等于N的正整数重量。那么这套砝码最少需要包含多少个砝码&#xff1f; 注意砝码可以放在天平两边。 输入格式 输入包含一个正整数N。 输出格式 输出一个整数代表…

【漏洞复现】企望制造 ERP命令执行

漏洞描述 由于企望制造 ERP comboxstore.action接口权限设置不当&#xff0c;默认的配置可执行任意SQL语句&#xff0c;利用xp_cmdshell函数可远程执行命令&#xff0c;未经认证的攻击者可通过该漏洞获取服务器权限。 免责声明 技术文章仅供参考&#xff0c;任何个人和组织…

【C++11】万能引用与完美转发

文章目录 1. 模板中的&&—万能引用2. 完美转发及其应用场景3. 用到的代码3.1 string.h3.2 list.h3.3 test.cpp 1. 模板中的&&—万能引用 首先我们来看这样一段代码&#xff1a; 这里有4个函数&#xff0c;我们很容易能看出来它们是一个重载的关系 然后我们给这…

CSI及CPHY的学习知识点

0.CSI早期只有DPHY可用 CSI-2 v1.3及之后版本提供了更高的接口带宽和更好的通道布局灵活性。从CSI-2 V1.3开始引入了C-PHY 1.0&#xff08;C-PHY 1.0是MIPI联盟于2014年9月发布的新物理接口)&#xff0c;能够兼容之前的D-PHY v1.2版本。 在CSI-2 V1.2及以前都只能用DPHY传输csi…

echarts添加点击事件

实现效果&#xff1a;点击图表&#xff0c;弹出该数据下对应得详情 官方文档&#xff1a; 封装的图表组件中&#xff1a; 点击获取点击得对象&#xff0c;进而将需要的参数传给父组件&#xff0c;在父组件中再去请求接口获取更多信息 this.chart.on(click, (params)> {th…

HTML5福利篇--使用Canvas画图

目录 一.Canvas元素 1.Canvas元素定义 2.使用JavaScript获取页面中的Canvas对象 二.绘制图形 1.绘制直线 2.绘制矩形 &#xff08;1&#xff09;rect() &#xff08;2&#xff09;strokeRect() &#xff08;3&#xff09;fillRect()和clearRect()函数 3.绘制圆弧 4.…

C语言的stdio.h的介绍

C语言的stdio.h的介绍 C语言的stdio.h的介绍 C语言的stdio.h的介绍C语言stdio.h的介绍 C语言stdio.h的介绍 这个含义是导入标准输入输出库 包含头文件.h&#xff0c;std标准库&#xff0c;io是input output输入输出库 <>代表系统库&#xff0c;自定义的话用""…

Stm32_点灯

利用HAL库基本语法实现C8T6点灯操作 引脚配置 PB3、4 、5 //设置为output PB6、7 设置Input且为上拉初始化代码&#xff1a; 由于3、4、5引脚默认输出为0灯泡默认点亮所以要将他们初始化为1 void Inint(){//初始化灯泡函数熄灭HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PI…

C#源码 LIS实验室(检验科)信息系统源码 SaaS模式的Client/Server架构

LIS实验室&#xff08;检验科&#xff09;信息系统&#xff0c;一体化设计&#xff0c;与其他系统无缝连接&#xff0c;全程化条码管理。集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。 技术细节&#xff1a; 体系结构…

【效率提升】maven 转 gradle 实战 | 京东云技术团队

一、灵魂三问 1、gradle 是什么&#xff1f; 一个打包工具&#xff0c; 是一个开源构建自动化工具&#xff0c;足够灵活&#xff0c;可以构建几乎任何类型的软件&#xff0c;高性能、可扩展、能洞察等。其中洞察&#xff0c;可以用于分析构建过程中数据&#xff0c;提供分析参…

Vue 使用vue-pdf 显示pdf文件 切换页面 缩放 全屏 自动播放等

<template><div id"container"><!-- 上一页、下一页--><div class"right-btn"><div click"toFullOrExit" class"turn-btn"><span>{{ isFull 1 ? "取消全屏" : "全屏" }}&l…

IDS与防火墙的区别

1. 什么是IDS&#xff1f; IDS是入侵检测系统&#xff08;Intrusion Detection System&#xff09;的缩写。它是一种计算机安全工具&#xff0c;用于监视计算机网络或系统中的活动&#xff0c;以便检测潜在的恶意行为或入侵尝试。IDS的主要目标是识别可能威胁网络安全的活动&a…

Serverless 数仓技术与挑战(内含 PPT 下载)

近期&#xff0c;Databend Labs 联合创始人张雁飞发表了题为「Serverless 数仓技术与挑战」的主题分享。以下为本次分享的精彩内容&#xff1a; 主题&#xff1a; 「Serverless 数仓技术与挑战」 演讲嘉宾&#xff1a; 张雁飞 嘉宾介绍&#xff1a; Databend Labs 联合创始人…

智能井盖:提升城市井盖安全管理效率

窨井盖作为城市基础设施的重要组成部分&#xff0c;其安全管理与城市的有序运行和群众的生产生活安全息息相关&#xff0c;体现城市管理和社会治理水平。当前&#xff0c;一些城市已经将智能化的窨井盖升级改造作为新城建的重要内容&#xff0c;推动窨井盖等“城市部件”配套建…

微信公众号开发(BUG集)

1.微信公众平台接口错误:不合法的自定义菜单使用用户 地址&#xff1a;解决地址 2.微信公众平台接口错误:invalid ip 180.101.72.196 ipv6 ::ffff:180.101.72.196, not in whitelist rid: 6511420b-60c59249-01084d02 白名单离开放服务器IP