0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Springapplication调用的run方法的大致流程

冬至子 来源:瑞煕share 作者:brevity wit 2023-06-02 10:11 次阅读

1. 对Spring Boot的理解

SpringBoot主要用来简化使用Spring的难度和繁重的XML配置,它是Spring组件的一站式解决方案,采取了习惯优于配置的方法。通过.properties或者.yml文件替代了Spring繁杂的XML配置文件,同时支持@ImportResource注解加载XML配置。Spring Boot还提供了嵌入式HTTP服务器、命令行接口工具、多种插件等等,使得应用程序的测试和开发简单起来。

  1. 可以快速构建项目;
  2. 可以对主流开发框架的无配置集成;
  3. 项目可独立运行,无需外部依赖Servlet容器;
  4. 提供运行时的应用监控;
  5. 可以极大地提高开发、部署效率;
  6. 可以与云计算天然集成。

2. Spring Boot Starter作用

Spring Boot通过提供众多起步依赖(Starter)降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model, POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了它们提供的某种或某类功能。

举例来说,你打算把这个阅读列表应用程序做成一个Web应用程序。与其向项目的构建文件里添加一堆单独的库依赖,还不如声明这是一个Web应用程序来得简单。你只要添加Spring Boot的Web起步依赖就好了。

3. Spring Boot的启动流程

首先,Spring Boot项目创建完成会默认生成一个名为 *application 的入口类,我们是通过该类的main方法启动Spring Boot项目的。在main方法中,通过Springapplication的静态方法,即run方法进行Springapplication类的实例化操作,然后再针对实例化对象调用另外一个run方法来完成整个项目的初始化和启动。Springapplication调用的run方法的大致流程:

  1. 获取SpringapplicationListener监听器;
  2. 启动所获取到的所有监听器;
  3. 初始化ConfigurableEnvironment(配置文件);
  4. 打印Banner图标;
  5. 创建容器ConfigurableapplicationContext;
  6. 准备容器ConfigurableapplicationContext;
  7. 初始化容器ConfigurableapplicationContext;
  8. 监听器通知容器启动完成;
  9. 监听器通知容器正在运行;

除了上述核心操作,run方法运行过程中还涉及启动时长统计、异常报告、启动日志、异常处理等辅助操作。

4. 描述Spring Boot自动装配的过程

@EnableAutoConfiguration注解、 @Configuration注解和 @ConditionalOnClass注解组成了Spring Boot自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置。具体是通过maven读取每个starter中的spring.factories文件,该文件配置了所有需要被创建在spring容器中的bean。

5. 对Spring Boot注解的了解

  1. @SpringBootapplication注解:

在Spring Boot入口类中,唯一的一个注解就是@SpringBootapplication。它是Spring Boot项目的核心注解,用于开启自动配置,准确说是通过该注解内组合的@EnableAutoConfiguration开启了自动配置。

  1. @EnableAutoConfiguration注解:

允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。

  1. @Conditional注解:

@Conditional注解是由Spring 4.0版本引入的新特性,可根据是否满足指定的条件来决定是否进行Bean的实例化及装配。

图片

6. Spring、SpringMVC和Springboot的区别

  1. Spring
    Spring最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。
    当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测 试可以很容易的进行。
  2. Spring MVC
    Spring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet, MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的非常简单。
  3. SpringBoot
    Spring 和 SpringMVC 的问题在于需要配置大量的参数

7. 关于SpringBoot配置的一些问题

  1. Spring Boot 的核心配置文件有哪几个?它们的区别是什么?

Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。

application 配置文件主要用于 Spring Boot 项目的自动化配置。 bootstrap 配置文件有三个应用场景。 使用Spring Cloud Config配置中心时,需要在 bootstrap 配置文件中添加连接到配置中心的配置属性,来加载外部配置中心的配置信息; 一些固定的不能被覆盖的属性; 一些加密或解密的场景。

2. Spring Boot 的配置文件有哪几种格式?它们有什么区别?

主要有.properties 和 .yml格式,它们的区别主要是书写格式不同。另外,.yml 格式不支持 @PropertySource 注解导入配置。

3. 如何理解 Spring Boot 配置加载顺序

Spring Boot配置加载顺序优先级是:propertiese文件、YAML文件、系统环境变量、命令行参数。

4. 什么是YAML,有什么优点。

YAML 是一种可读的数据序列化语言,它通常用于配置文件。

优点:

配置有序

支持数组,数组中的元素可以是基本数据类型或者对象

简洁方便

5. Spring Boot 是否可以使用 XML 配置 , Spring Boot 可以兼容老 Spring 项目吗

Spring Boot 推荐使用 Java 配置同时支持 XML 配置,通过 @ImportResource 注解加载 XML 配置;

可以兼容,使用 @ImportResource 注解导入老 Spring 项目配置文件。

6. application.properties和bootstrap.properties有何区别

bootstrap比 applicaton 优先加载,配置在应用程序上下文的引导阶段生效, 而且boostrap 里面的属性不能被覆盖; application用于 spring boot 项目的自动化配置。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16356

    浏览量

    177978
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3590

    浏览量

    129463
  • MVC
    MVC
    +关注

    关注

    0

    文章

    73

    浏览量

    13853
  • YAML
    +关注

    关注

    0

    文章

    21

    浏览量

    2322
  • XML加密
    +关注

    关注

    0

    文章

    3

    浏览量

    987
收藏 人收藏

    评论

    相关推荐

    单片机是靠什么去读取AD的数据?讲一下大致流程

    单片机是靠什么去读取AD的数据?讲一下大致流程
    发表于 11-13 11:10

    分析 helloworld程序是如何被调用,SYS_RUN做什么事情

    [DEMO] Hello world. 但是 HelloWorld 函数是在何时被调用的呢?SYS_RUN 又是干嘛的呢?我们来看下。1. 启动流程首先,我们需要分析一下Hi3861的启动
    发表于 10-27 18:15

    【HarmonyOS】分析 helloworld程序是如何被调用,SYS_RUN做什么事情

    world. 但是 HelloWorld 函数是在何时被调用的呢?SYS_RUN 又是干嘛的呢?我们来看下。1. 启动流程首先,我们需要分析一下Hi3861的启动流程。目前Hi386
    发表于 10-27 19:05

    SYS_RUN()和MODULE_INIT()之间的那些事精华

    语句 SYS_RUN(app_entry); 指定,其中 app_entry 是设备程序入口函数名;而整个鸿蒙设备的启动流程也可以顺理成章的挖掘出来。如下图:这看起来非常完美了,解决了所有问题!可是,我
    发表于 12-10 10:17

    激光测距设计大致流程

    激光测距设计:大致流程:1,基本原理和关键:激光脉冲测距与雷达测距在原理上是完全相同的。在测距点激光发射机向被测目标发射激光脉冲,光脉冲穿过大气到达目标,其中一小部分激光经目标反射后返回测距点,并被
    发表于 09-14 08:24

    ARM中断异常的大致流程是怎样去实现的

    表:异常处理的大致流程主要针对中断进行讲解,其他的类似2. 中断异常当手机接到一个电话时,电话模块他会接到这个信号,电话和手机内部的CPU通过某个管脚相连,电话模块通过这个管教把信号发给CPU,CPU
    发表于 04-26 09:37

    matlab自定义函数调用方法

    matlab自定义函数调用方法 命令文件/函数文件+ 函数文件 - 多
    发表于 11-29 13:14 88次下载

    vb调用excel方法大全

    电子发烧友网站提供《vb调用excel方法大全.docx》资料免费下载
    发表于 04-14 10:27 6次下载

    OTP语音芯片电路的大致制作方法

    都知道语音芯片大致分为OTP语音芯片和MASK语音芯片,可又有几人知道OTP语音芯片电路的制作方法呢?下面小编就和大家分享下OTP语音芯片电路的大致制作方法: OTP语音芯片主要
    的头像 发表于 06-17 09:18 2818次阅读

    run-jetty-run jetty eclipse插件

    ./oschina_soft/run-jetty-run.zip
    发表于 05-17 09:46 1次下载
    <b class='flag-5'>run-jetty-run</b> jetty eclipse插件

    C调用matlab方法

    C调用matlab方法介绍
    发表于 07-31 10:55 0次下载

    微服务循环依赖调用引发的血案

    顺着测试汇报的出现问题的场景,跟踪调用链上相关服务的日志,发现出现了微服务之间循依赖调用大致情况可以抽象如下所示(图中所有调用都是 http 协议)
    的头像 发表于 01-16 10:28 713次阅读

    说说SpringBoot启动流程

    首先从main找到run()方法,在执行run()方法之前new一个SpringApplication对象
    的头像 发表于 03-28 17:52 1455次阅读

    Spring Boot启动 Eureka流程

    (String[] args) { SpringApplication .run (EurekaServer.class, args); }} 上面的代码是最最平常的 Spring Boot 启动类
    的头像 发表于 10-10 11:40 893次阅读
    Spring Boot启动 Eureka<b class='flag-5'>流程</b>

    super调用父类的构造方法

    我们分析这句话“父类对象的引用”,那说明我们使用的时候只能在子类中使用,既然是对象的引用,那么我们也可以用来调用成员属性以及成员方法,当然了,这里的 super 关键字还能够调用父类的构造方法
    的头像 发表于 10-10 16:42 910次阅读
    super<b class='flag-5'>调用</b>父类的构造<b class='flag-5'>方法</b>