• SpringBoot原理简介说明


    转自:

    SpringBoot原理简介说明

    下文笔者将讲述SpringBoot的原理相关说明,如下所示:

    SpringBoot简介说明

    SpringBoot是一个快速开发框架
    可快速的将一些常用的第三方依赖整合
    SpringBoot开发简化XML配置
    全部采用注解形式
    内置Http服务器(Jetty和Tomcat)
    最终以java应用程序进行执行

    使用SpringBoot开发
    可简化Spring应用的创建、运行、调试、部署
    采用SpringBoot框架开发,我们可专注于业务代码的应用开发,无需过多的处理XML的配置
    

    SpringBoot的核心原理

    SpringBoot核心通过Maven继承依赖关系快速整合第三方框架

    
    	org.springframework.boot
    	spring-boot-starter-parent
    	2.0.0.RELEASE	
    
    
    	
    	
    	
    		org.springframework.boot
    		spring-boot-starter-web
    	
    
    

    springboot通过引用spring-boot-starter-web依赖
    整合SpingMVC框架
    当你添加了相应的starter模块
    就相当于添加了相应的所有必须的依赖包
    包括spring-boot-starter(这是Spring Boot的核心启动器,包含了自动配置、日志和YAML)
    spring-boot-starter-test(支持常规的测试依赖,包括JUnit、Hamcrest、Mockito以及spring-test模块)
    spring-boot-starter-web(支持全栈式Web开发,包括Tomcat和spring-webmvc)等相关依赖

    SpringMVC无配置文件(纯Java)完全注解化实现SpringBoot框架,Main函数启动

    例:
    SpringBoot的三种启动方式

    @SpringBootApplication 
    public class Application {
        //方式一
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
        //方式二
        public static void main(String[] args) {
            SpringApplication app = new SpringApplication(MySpringConfiguration.class);
            app.run(args);
        }
    	//方式三
        public static void main(String[] args) {
            new SpringApplicationBuilder()
                .sources(Parent.class)
                .child(Application.class)
                .run(args);
        }
    }
    

    SpringBoot的启动流程

    springboot编写的代码程序
    只需加上@SpringBootApplication注解

    @SpringBootApplication注解实际上是
    @Configuration配置类,@ComponentScan类,包扫描,
    @EnableAutoConfiguration根据需求自动加载相关的bean这三个注解
    

    SpringBoot的启动流程如下

    1. 初始化监听器,以及添加到SpringApplication的自定义监听器
    
    2. 发布ApplicationStartedEvent事件,如果想监听ApplicationStartedEvent事件,
       你可以这样定义:public class ApplicationStartedListener implements ApplicationListener,然后通过SpringApplication.addListener(..)添加进去即可
    
    3. 装配参数和环境,确定是web环境还是非web环境
    
    4. 装配完环境后,就触发ApplicationEnvironmentPreparedEvent事件
    
    5. 如果SpringApplication的showBanner属性被设置为true,则打印启动的Banner
    
    6. 创建ApplicationContext,会根据是否是web环境,来决定创建什么类型的ApplicationContext
    
    7. 装配Context的环境变量,注册Initializers、beanNameGenerator等
    
    8. 发布ApplicationPreparedEvent事件
    
    9. 注册springApplicationArguments、springBootBanner,加载资源等
    
    10. 遍历调用所有SpringApplicationRunListener的contextLoaded()方法
    
    11. 调用ApplicationContext的refresh()方法,装配context beanfactory等非常重要的核心组件
    
    12. 查找当前ApplicationContext中是否注册有CommandLineRunner,如果有,则遍历执行它们
    
    13. 发布ApplicationReadyEvent事件,启动完毕,表示服务已经可以开始正常提供服务了。通常我们这里会监听这个事件来打印一些监控性质的日志,表示应用正常启动
    

    版权声明

  • 相关阅读:
    2023年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
    mac 升级node到指定版本
    某款服务器插上4张TDP功耗75瓦PCIE卡无法开机的调试过程
    企业怎样申请SSL证书?
    41_引用类型用法总结
    架构-设计原则
    企业是如何搭建帮助中心的?
    指针定义等概念
    jupyterlab开发环境最佳构建方式
    CatBoost高级教程:分布式训练与大规模数据处理
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127877803