SpringBoot

本文介绍了SpringBoot快速入门、IDEA搭建、配置详解(包括@Value、Environment和@ConfigurationProperties)、Profile配置与激活、启动流程分析、监控与部署。深入解析自动配置、监听机制及各种注解的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、快速入门

1.创建Maven项目

2.导入Springboot起步依赖

在这里插入图片描述

3.定义Controller

在这里插入图片描述

4.编写引导类

运行引导类的main方法就可以启动项目。
在这里插入图片描述
在这里插入图片描述

二、IDEA快速构建SpringBoot项目

1.创建spring Initializr模块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、SpringBoot的配置

1.配置文件分类

  • application.propertoes
    键值对形式
  • application.yam(yaml)
    JSON的超集形式,以数据为中心
    在这里插入图片描述

2.配置文件的读取优先级

如:properties、yaml、yml都配置了同样的配置项,那么谁生效呢?
properties > yml > yaml,读取了properties的属性,其他两个的配置了相同的属性会被忽略掉,如果优先级低的配置文件里配置了优先级高的配置文件没有的属性,那么也会被读取识别。

3.读取配置文件的内容

3.1 @Value 【注解】

一个一个手动注入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 Environment 【环境对象】

在这里插入图片描述
在这里插入图片描述

3.3 @configurationProperties 【注解】

配置内容的键自动对应实体类对象的属性,配置文件的键需和实体类的属性名一致。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
————————————————————————————————————————————————————————
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. profile

功能:进行动态配置切换的。同一套程序会被安装到不同环境,如开发、测试、生产等。

4.1 profile配置方式

4.1.1 多profile文件方式

在这里插入图片描述
在这里插入图片描述
激活
在这里插入图片描述

4.1.2 yml多文档方式

在这里插入图片描述
在这里插入图片描述

4.2 profile激活方式

4.2.1 配置文件

看4.1的激活部分

4.2.1 虚拟机参数

会覆盖文件激活方式
在这里插入图片描述

4.2.1 命令行参数

会覆盖文件激活方式
在这里插入图片描述

4.3 打包后如何激活配置参数

在这里插入图片描述
在这里插入图片描述

5. 配置的读取顺序

5.1 内部配置文件加载顺序

如多个地方都有配置文件,则都会加载,并互补(classpath的根目录的配置文件配置了内容,而当前项目下的/config目录的配置文件没有配置,那程序会读取classpath根目录下的配置文件的配置项)。
在这里插入图片描述
在这里插入图片描述

5.2 外部配置文件加载顺序

5.2.1 命令行加载方式

配置文件内容
在这里插入图片描述
配置文件位置
在这里插入图片描述
加载配置文件
在这里插入图片描述

5.2.2 同级加载方式

不用加任何参数,直接读取。如同级目录中有config文件夹并有配置文件,则会先加载config文件夹中的配置文件。
在这里插入图片描述
在这里插入图片描述

四、SpringBoot原理分析

4.1 自动配置

4.1.1 condition 条件判断功能

选择性创建Bean操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
类的判断定义为动态的,判断哪个字节码文件存在则可以动态指定。
第一步:自定义注解
在这里插入图片描述
第二步:使用自定义注解,来判断你需要判断的条件
在这里插入图片描述
在这里插入图片描述

4.1.2 切换内置web服务器

内置的服务器有:
在这里插入图片描述

在这里插入图片描述

4.1.3 @Import 注解

使用@Import导的类被Spring加载到IOC容器中,用法为

  1. 导入Bean
    在这里插入图片描述

  2. 导入配置类
    在这里插入图片描述
    在这里插入图片描述

  3. 导入ImportSelector实现类,一般用于加载配置文件中的类
    在这里插入图片描述
    在这里插入图片描述

  4. 导入ImportBeanDefinitionRegistrar实现类
    在这里插入图片描述
    在这里插入图片描述

4.1.4 @EnableAutoConfiguration注解

在这里插入图片描述

4.2 监听机制

在这里插入图片描述
在这里插入图片描述
概括:
放在IOC容器中会被自动执行:
加上@Component注解启动项目,只有两个监听器会被自动调用(ApplicationRunner、CommandLineRunner),这两个的作用、执行时机基本一样,只是参数不一样,ApplicationRunner的参数是对象,CommandLineRunner的参数是String可变参数。
在这里插入图片描述
在这里插入图片描述

需要配置才能生效:
META-INF中配置,在图标打印完后初始化,可以在项目还没有准备IOC容器之前检测资源是否存在。
在这里插入图片描述

在这里插入图片描述

4.2.1 ApplicationContextInitializer【需要配置才能生效】

在这里插入图片描述

4.2.2 SpringApplicationRunListener【需要配置才能生效】

SpringBoot启动时会触发不同的事件,在不同位置不同状态实现方法做不同的事情。没有构造方法会报错。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.3 CommandLineRunner【放在IOC容器中自动被执行】

项目启动后执行
在这里插入图片描述

4.2.4 ApplicationRunner【放在IOC容器中自动被执行】

项目启动后执行
在这里插入图片描述

4.3 启动流程分析

在这里插入图片描述
SpringBoot启动流程分为两部分,第一部分初始化,第二部分启动应用。
源码分析:启动时调用SpringApplication调用了run方法,run方法调用了本类的另一个静态方法,newSpringApplication,又调用了该对象的run方法,【new SpringApplication的初始化】这里构造了SpringApplication,它接收了两个参数,判断传递过来的primaySources(引导类,可多个)是否为空,接着判断是否是web环境(内部判断是不是有servlet对应类的class),接着设置初始化的initialzes,设置listeners,它去springFactories中加载这两个东西,可以在this里看到自定义的、系统提供的initialzes【SpringApplication.run启动应用】启动时间控制,监控项目启动时间;定义了IOC容器context;定义了Collection集合,里面存放exceptionReporter;注册了configureHeadlessProperty;接着getRunListeners,是一个容器,里面有很多定义了的Listener,此时控制台没有任何打印信息,接着调用了listeners.starting方法,starting方法里拿到RunListener集合,循环遍历调用每一个listenerstarting方法,此时日志将输出在自定义Listenerstarting中的打印信息。接着准备环境,封装环境参数在applicationArguments对象中,此时回调了listeners.environmentPrepared方法,里面也是循环遍历SpringApplicationRunListener调用每一个environmentPrepared,包括自己写的回调函数,此时控制台输出了自定义ListenerenvironmentPrepared中的打印信息。接着开始加载BeanInfo,接着打印Banner,支持自定义,可以通过BannerLocationProperty属性定义打印信息的地址,如果项目中(resource)存在banner.txt文件,则会打印该文件的内容。接着创建applicationContest(IOC容器),加载instances,接着准备context,此时触发了ApplicationContextRunListener的initialize方法(初始化)、contextPrepared方法(开始准备)、contextLoaded方法(开始加载),此时IOC容器创建完毕,但是beandefinitionMap中的bean还没有加载进来。接着refreshContext,在这会才真正去配置里面找有哪些bean要去创建,执行完了之后才加载进来。接着执行刷新afterRefresh,然后停止监控项目启动时间。接着listeners.started,然后项目启动成功了,它还会去执行相应的回调callRunners,此时自定义的Runner会被执行 。接着listenners.running,最后return context启动结束。

五、SpringBoot的监控

在这里插入图片描述

5.1 使用步骤

在这里插入图片描述

5.2 基本使用

在这里插入图片描述
在这里插入图片描述

5.3 完整使用

在这里插入图片描述

5.4 SpringBoot admin图形界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、SpringBoot项目部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值