ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringBoot的基本概念(1)

2022-08-21 13:04:20  阅读:143  来源: 互联网

标签:装配 启动器 springboot 启动 spring jar 基本概念 SpringBoot


 

1.为什么使用springboot 

  springboot容易上手,做了jar包的版本控制,不用考虑maven依赖,方便敏捷开发,内置tomcat减少开发配置,由于SPI提供对外的starter扩展。

 

2.springboot的自动装备原理:

@SpringBootApplication
    @EnableAutoConfiguration
        @Import(EnableAutoConfigurationImportSelector.class)
                EnableAutoConfigurationImportSelector 类
                    selectImports 方法 读取 META-INF/spring.factories 下的配置
key-value 形式的配置,交给ioc管理
    @ComponentScan
    @SpringBootConfiguration

 

3.springboot自动装配jar包扩展

  1:写一个自动装配的jar包,用来写自己启动器的核心逻辑.
    2:在自动装配工程中导入redis原生的jar包(不要导入启动器的包)
    3:在自动装配工程中创建一个meta-inf/spring.facotries文件  文件内容是
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.tuling.autoconfig.TulingRedisAutoConfiguration
    4:把你的自动装配类 安装到自己本地maven仓库中

    5:创建一个启动器工程 什么都不做,只做一个自动装配工程的依赖就可以了
    6:把启动器工程同样安装到本地maven仓库中.
    7:写一个测试工程来使用你自己的启动器好不好用.
        7.1)导入你自己的启动器工程(不是自动装配工程)
        7.2)在application.yml中配置属性.

 

 

4.springboot启动jar包

(1)Spring Boot应用打包之后,生成一个Fat.jar,包含了应用依赖的jar包和Spring Boot loader相关的类。
(2)Fat jar的启动Main函数是JarLauncher,它负责创建一个LaunchedURLClassLoader来加载/lib下面的jar,并以一个新线程启动应用的Main函数。



1.通过插件spring-boot-plugin 生成对应的 MANIFEST.MF文件,其中包含 main-class 指定运行 java -jar 的主程序, 并且把依赖的jar文件打包成fat.jar 2.运行java -jar    jarLauncher通过加载BOOT-INFO/class目录,以及BOOT-INFO/lib目录的文件,实现fat.jar的启动。 3.State-Class 加载应用程序的main方法。

 

5.springBoot 启动war包

tomcat---> web.xml--filter servlet listener 3.0+
tomcat启动的时候肯定调用了 SpringBootServletInitializer 的  SpringApplicationBuilder , 就会启动springboot

 

6.springboot的启动spring容器过程
    1.获取启动类。:需要根据启动类加载ioc容器     -- 并且.存储配置类
    3.推算web环境 是servlet  还是webFlux
    4.读取spring.factories     ,读取对外扩展的,对内解耦
        ApplicationContextInitializer,ApplicationListener  对外扩展
    5.根据main推算所在的类。
    

 

       

 

标签:装配,启动器,springboot,启动,spring,jar,基本概念,SpringBoot
来源: https://www.cnblogs.com/dhdnm/p/16609803.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有