初识SpringBoot

SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架 。

创建的包一定要在项目主程序入口的同级目录下,负责会识别不到

更改启动时显示的字符拼成的字母

关于漫画的ascii艺术字,自定义Spring Boot 漫画 banner下载,各种有意思的banner、ascii图案,还有中文文字banner,作为Spring Boot和终端命令行banner会让项目更有意思。-bootschool.net

原理初探:

自动装配:

pom.xml

 spring-boot-dependencies: 核心依赖在父工程中

我们在写或者引入一些SpringBoot依赖的时候,不需要指定版本,就因为有这些版本仓库

启动器:

比如  spring-boot-starter-web,他就会帮我们自动导入web项目所有的依赖

springboot会将所有的功能场景都变成一个个的启动器

我们要使用什么功能,就只需要找到对应的启动器就可以了,也就是一个个的starter

这个链接就是关于springboot的所有启动器

Developing with Spring Boot

主程序

//标注这个类是一个springboot的应用
@SpringBootApplication
public class BootApplication {

    public static void main(String[] args) {
        //将springboot应用启动
        SpringApplication.run(BootApplication.class, args);
    }

}

注解:

@SpringBootConfiguration     springboot的配置   启动类下的所有资源被导入
       @Configuration        spring配置类
             @Component      说明这也是一个spring的组件
  
@EnableAutoConfiguration       自动配置
       @AutoConfigurationPackage   自动配置包
           @Import({AutoConfigurationPackages.Registrar.class})  自动配置包"扫描包"       
       @Import({AutoConfigurationImportSelector.class})   自动配置导入选择
//获取所有的配置
List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);  

获取候选的配置

    protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
        List<String> configurations = ImportCandidates.load(AutoConfiguration.class, this.getBeanClassLoader()).getCandidates();
        Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you are using a custom packaging, make sure that file is correct.");
        return configurations;
    }

AutoConfigurationImportSelector

自动配置的核心配置文件

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. 

核心注解  :@ConditionalOnxxxxxx

如果条件都满足则生效

例如mvc,  我们导入了webmvc的包则全部满足,就会生效

总结: SpringBoot所有自动配置都是在启动的时候扫描并加载

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. 

所有的自动配置类都在这里面,,但是不一定都生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器了,有个启动器,我们的自动装配就会生效,然后就配置成功了

SpringBoot加载流程记忆版

  • 程序main方法执行开始加载@SpringBootApplication注解

  • 程序加载找到@EnableAutoConfiguration注解

    • 自动开启包扫描@AutoConfigurationPackage(加载自己的配置项)

      • AutoConfigurationPackages.Registrar.class 读取主启动类所在的包路径,则包扫描开始.创建/读取/主启动类的子孙包中的信息.

    • 自动导入其他组件

      • AutoConfigurationImportSelector.class在 springboot-autoConfigure中读取自动配置项 142项. 根据用户自己依赖的jar包文件 开始加载组件.

      • 如果加载组件的过程中 发现配置文件与需要的名称一致,则动态为配置项的配置文件的属性赋值 实现参数的动态修改.

  • 如果程序运行没有错 则SpringBoot程序启动成功.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【排序算法】C语言实现归并排序,包括递归和迭代两个版本

文章目录 &#x1f680;前言&#x1f680;归并排序介绍及其思想&#x1f680;递归实现&#x1f680;迭代实现 &#x1f680;前言 大家好啊&#xff01;阿辉接着更新排序算法&#xff0c;今天要讲的是归并排序&#xff0c;这里阿辉将讲到归并排序的递归实现和迭代实现&#xff…

CPU中的算术逻辑单元(ALU)

ALU有2个单元&#xff0c;1个算术单元和1个逻辑单元 算数单元 1 bit加法 半加器 由一个异或门&#xff08;XOR&#xff09;和与门&#xff08;AND&#xff09;两个逻辑门构成&#xff0c;异或门表示无进位加法&#xff08;sum&#xff09;&#xff0c;而与门表示进位&…

k-Wave仿真例程:创建超声换能器并绘制声场分布

k-Wave介绍 k-Wave软件是为了模拟超声波在1D、2D或3D中的传播。 应用示例包括&#xff1a; - 均匀和非均匀介质中的传播 - 模拟各种类型的传感器 - 模拟多普勒效应 - 衍射、折射和反射 - 光声、超声成像 - 波束合成、成像重建 - 模拟弹性波 安装k-Wave 安装k-Wave需要几个步…

基于springboot+vue的小徐影城管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

移动端测试如何学,超详细的APP测试攻略送上

前言 随着手机应用市场发展的逐渐成熟&#xff0c;手机APP已经渗透到人们的吃穿住行生活&#xff0c;比如手机支付APP、通讯APP、各大应用软件等&#xff0c;关于手机APP安全性能的重要性不言而喻。 鉴于此&#xff0c;做好手机APP测试对于软件开发方把控产品质量有着重要意义…

计算机408真的很难吗❓|深度分析+实操上岸规划

在下面这篇文章中&#xff0c;LUCEN详细分析了24考研的难度以及25考研人该怎么办 24考研计算机很难&#xff01;25考研你就这么干 如果你对于计算机考研择校有任何疑问&#xff0c;那么下面这篇文章一定能够帮助你&#xff1a; 计算机择校指南&#xff0c;内含300所院校 如…

Linux命令-top

1、top命令简介 top命令是linux系统常用命令之一&#xff0c;能够实时显示系统各个进程的资源占用情况&#xff0c;类似于windows系统的任务管理器。 需要注意的是&#xff1a;top命令监控的最小单位是进程&#xff0c;如果想监控更小单位时&#xff0c;就需要用到ps或者nets…

代码评审——随机数Random问题

问题描述&#xff1a; 为了获取唯一值&#xff0c;经常会依赖产生随机数来保证唯一性。在获取随机数时&#xff0c;如果使用错误的方法&#xff0c;会比较低效。 可以参考以下代码&#xff1a; public static String geneRundomNo(){Random rnew Random();int numr.nextInt(…

springboot114基于多维分类的知识管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的基于多维分类的知识管理系统 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章…

Server-Sent Events(SSE)简单实现实时通信

Server-Sent Events&#xff08;SSE&#xff09;是一种基于HTTP的实时通信协议&#xff0c;它允许服务器向客户端推送信息。相比于传统的轮询方式&#xff0c;SSE 提供了更加轻量级和实时的通信机制。在本文中&#xff0c;我们将深入浅出地介绍如何简单实现 Server-Sent Events…

在上海做程序员这么多年,退休后我的工资是多少?

大家好&#xff0c;我是拭心。 最近看到一个很可惜的事&#xff1a;有个阿姨在深圳缴纳了 12 年社保&#xff0c;第 13 年家里突然有事不得不回老家&#xff0c;回去后没再缴纳社保&#xff0c;结果退休后无法领退休工资&#xff0c;还得出来打工赚钱。 之所以这样&#xff0…

STL常用容器—stack与queue容器(栈与队列)

STL常用容器—stack与queue容器&#xff08;栈与队列&#xff09; stack容器1. stack容器模型图2. stack 基本概念3. stack 常用接口 queue 容器1. queue 容器模型图2. queue 基本概念3. queue 常用接口 参考博文1&#xff1a;&#xff1c;C&#xff1e; stack与queue容器概念模…

这种环境下腾讯64亿在北京拿地?

近期&#xff0c;金融市场出现较大波动&#xff0c;A股指数跌至2700点&#xff0c;同时恒生指数也下滑至15000点&#xff0c;引发了社会各界的关注和思考。与此同时&#xff0c;腾讯以64.2亿元拿下北京海淀区地块&#xff0c;马云和蔡崇信又增持阿里股票&#xff0c;这一系列的…

【Java网络编程01】网络原理初识

【Java网络编程01】网络原理初识 1. 网络通信基础概念 网络通信&#xff1a;网络互连的目的就是网络通信&#xff0c;即网络数据传输&#xff0c;再直白点而言就是不同主机的不同进程之间基于网络进行数据的传输交互。 那么&#xff0c;在组建的网络上有各种各样的主机&#…

【Conda】超详细的linux-conda环境安装教程

背景 最近被python各个版本环境整的头晕目眩&#xff0c;本来就不是专长做python的&#xff0c;切换各种版本着实不好操作&#xff0c;因此想到了conda这个好工具&#xff0c;以下是对conda的相关理解和搭建的详细过程&#xff0c;做个记录。 Conda简介 Conda是在Windows、m…

3.Eureka注册中心

3.Eureka注册中心 假如我们的服务提供者user-service部署了多个实例&#xff0c;如图&#xff1a; 大家思考几个问题&#xff1a; order-service在发起远程调用的时候&#xff0c;该如何得知user-service实例的ip地址和端口&#xff1f;有多个user-service实例地址&#xff0…

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案 Redis的高性能是由于其将所有数据都存储在了内存中&#xff0c;为了使Redis在重启之后仍能保证数据不丢失&#xff0c;需要将数据从内存中同步到硬盘中&#xff0c;这一过程就是持久化。 Redis支持两种方式的持久化…

Vue 的 事件修饰符and按键修饰符

1、事件修饰符概览 修饰符说明 .prevent阻止默认事件 .stop阻止冒泡.once事件只触发一次 .capture 添加事件侦听器时使用事件捕获模式.self只有点击当前元素本身时才会触发回调.passive事件的默认行为立即执行&#xff0c;无需等待事件回调执行完毕(不常用).native 将vue组件…

【单例模式】保证线程安全实现单例模式

&#x1f4c4;前言&#xff1a;本文是对经典设计模式之一——单例模式的介绍并讨论单例模式的具体实现方法。 文章目录 一. 什么是单例模式二. 实现单例模式1. 饿汉式2. 懒汉式2.1 懒汉式实现单例模式的优化&#xff08;一&#xff09;2.2 懒汉式实现单例模式的优化&#xff08…