码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringBoot


    文章目录

    • 一、快速入门
      • 1.创建Maven项目
      • 2.导入Springboot起步依赖
      • 3.定义Controller
      • 4.编写引导类
    • 二、IDEA快速构建SpringBoot项目
      • 1.创建spring Initializr模块
    • 三、SpringBoot的配置
      • 1.配置文件分类
      • 2.配置文件的读取优先级
      • 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.2.1 虚拟机参数
          • 4.2.1 命令行参数
        • 4.3 打包后如何激活配置参数
      • 5. 配置的读取顺序
        • 5.1 内部配置文件加载顺序
        • 5.2 外部配置文件加载顺序
          • 5.2.1 命令行加载方式
          • 5.2.2 同级加载方式
    • 四、SpringBoot原理分析
      • 4.1 自动配置
        • 4.1.1 condition 条件判断功能
        • 4.1.2 切换内置web服务器
        • 4.1.3 @Import 注解
        • 4.1.4 @EnableAutoConfiguration注解
      • 4.2 监听机制
        • 4.2.1 ApplicationContextInitializer【需要配置才能生效】
        • 4.2.2 SpringApplicationRunListener【需要配置才能生效】
        • 4.2.3 CommandLineRunner【放在IOC容器中自动被执行】
        • 4.2.4 ApplicationRunner【放在IOC容器中自动被执行】
      • 4.3 启动流程分析
    • 五、SpringBoot的监控
      • 5.1 使用步骤
      • 5.2 基本使用
      • 5.3 完整使用
      • 5.4 SpringBoot admin图形界面
    • 六、SpringBoot项目部署

    一、快速入门

    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方法调用了本类的另一个静态方法,new了SpringApplication,又调用了该对象的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集合,循环遍历调用每一个listener的starting方法,此时日志将输出在自定义Listener的starting中的打印信息。接着准备环境,封装环境参数在applicationArguments对象中,此时回调了listeners.environmentPrepared方法,里面也是循环遍历SpringApplicationRunListener调用每一个environmentPrepared,包括自己写的回调函数,此时控制台输出了自定义Listener的environmentPrepared中的打印信息。接着开始加载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项目部署

  • 相关阅读:
    第六章- Verilog HDL 高级程序设计举例【Verilog】
    面向对象程序设计1-类的定义和使用
    开启全新教学模式!vLive虚拟直播如何赋能线上教培
    合作式智能运输系统 应用层交互技术要求 第 1 部分:意图共享与协作
    springboot企业客户信息反馈平台springboot39
    高压放大器在扫描显微镜中的应用及优势是什么
    【 Docker 容器详细介绍和说明】
    【面试题】volatile关键字
    java计算机毕业设计网上书店管理系统源码+系统+数据库+lw文档+mybatis+运行部署
    可视化剪辑,账号矩阵管理,视频分发,聚合私信多功能一体化营销工具 源代码开发部署方案
  • 原文地址:https://blog.csdn.net/cimbala/article/details/125800679
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号