SpringBoot基础(一):快速入门

06-01 1057阅读

SpringBoot基础系列文章

SpringBoot基础(一):快速入门


目录

  • 一、SpringBoot简介
  • 二、快速入门
  • 三、SpringBoot核心组件
    • 1、parent
      • 1.1、spring-boot-starter-parent
      • 1.2、spring-boot-dependencies
      • 2、starter
        • 2.1、spring-boot-starter-web
        • 2.2、spring-boot-starter
        • 2.3、parent和starter的区别
        • 3、启动类
        • 4、内嵌Tomcat运行原理

          一、SpringBoot简介

          • SpringBoot可以简单、快速地创建一个独立的、生产级别的Spring应用(说明:SpringBoot底层是Spring)
          • 大多数SpringBoot应用只需要编写少量配置即可快速整合Spring平台以及第三方技术

            SpringBoot特性

            • 快速创建独立Spring应用
              • 以前的SSM框架,需要导包、写配置、启动运行
              • 直接嵌入Tomcat、Jetty or Undertow,不再需要部署war包
              • 提供可选的场景启动器(starter),简化应用整合
                • 为每一种场景准备一个依赖,如:spring-boot-starter-web、mybatis-plus-boot-starter
                • 以前需要导包,控制版本
                • 按需自动配置Spring以及第三方库
                  • 约定大于配置:每个场景都有很多基本的默认配置

                    总结:简化整合、配置、开发、部署

                    二、快速入门

                    pom.xml

                    • 所有springboot项目pom文件都必须继承spring-boot-starter-parent
                    • web场景启动器spring-boot-starter-web包含了web开发的所有依赖
                      
                          4.0.0
                          
                          
                              org.springframework.boot
                              spring-boot-starter-parent
                              2.7.11
                              
                          
                          springboot
                          
                              8
                              8
                              UTF-8
                          
                          
                              
                              
                                  org.springframework.boot
                                  spring-boot-starter-web
                              
                          
                          
                          
                              
                                  
                                      org.springframework.boot
                                      spring-boot-maven-plugin
                                  
                              
                          
                      
                      

                      核心启动类

                      // 这是一个SpringBoot应用
                      @SpringBootApplication 
                      public class SpringBootMainApplication {
                          public static void main(String[] args) {
                              SpringApplication.run(SpringBootMainApplication.class,args);
                          }
                      }
                      

                      Controller测试类

                      @RestController
                      public class HelloController {
                          @GetMapping("/hello")
                          public String hello(){
                              return "Hello,Spring Boot !";
                          }
                      }
                      

                      访问路径:http://localhost:8080/hello

                      SpringBoot基础(一):快速入门

                      三、SpringBoot核心组件

                      1、parent

                        之前传统框架对依赖版本的选择具有固定的搭配格式,并且这些依赖版本的选择还不能乱搭配。于是SpringBoot将所有的技术版本的常见使用方案(parent版本)都整理出来,以后开发者直接使用它提供的方案(parent版本)即可,就不用担心冲突问题了。

                      1.1、spring-boot-starter-parent

                      parent版本即为SpringBoot项目pom文件的父工程坐标

                      • parent有很多版本,每个parent版本包含了几百种技术的版本号
                      • parent只负责进行版本管理,不会导入坐标
                            org.springframework.boot
                            spring-boot-starter-parent
                            2.7.11
                        
                        

                        spring-boot-starter-parent坐标内容

                        • 核心内容spring-boot-dependencies依赖管理,下面讲
                        • 设置默认的java编译版本以及编码方式
                        • 管理打包插件的版本,这也是SpringBoot的pom文件中打包插件不用写版本号的原因

                          SpringBoot基础(一):快速入门

                          1.2、spring-boot-dependencies

                          • 这里将常用的框架之间适配的版本号已配置好
                          • 只管理依赖版本,而不导入依赖
                          • 依赖管理标签内,则表示只是引入申明,只有在子pom中使用(不用写版本号)依赖才会导入

                            SpringBoot基础(一):快速入门

                            • 如果想导入依赖则需要在SpringBoot的pom文件中配置,如导入activemq
                                org.apache.activemq
                                activemq-amqp
                              
                              
                              • 如果想要修改版本号,可以在SpringBoot的pom文件中配置
                                  5.7.0
                                
                                # 或者直接修改版本,maven就近原则
                                
                                  org.apache.activemq
                                  activemq-amqp
                                  5.7.0
                                
                                

                                2、starter

                                • starter定义了使用某种技术时对于依赖的固定搭配格式,可以帮助开发者减少依赖配置
                                  • 官方提供的场景:命名为:spring-boot-starter-*
                                  • 第三方提供场景:命名为:*-spring-boot-starter

                                    2.1、spring-boot-starter-web

                                    • 项目中的pom.xml没有写SpringMVC的坐标,而只添加spring-boot-starter-web的依赖
                                          org.springframework.boot
                                          spring-boot-starter-web
                                      
                                      
                                      • spring-boot-starter-web中定义了若干个具体依赖的坐标

                                        SpringBoot基础(一):快速入门

                                        • 简单看下spring-boot-starter-json和spring-boot-starter-tomcat的内容

                                          SpringBoot基础(一):快速入门

                                          2.2、spring-boot-starter

                                          • 这里会导入spring的依赖

                                            SpringBoot基础(一):快速入门

                                            • 核心依赖spring-boot-autoconfigure的jar包
                                            • 这些类会通过条件组件给spring容器导入bean对象(如:导入redis依赖,就会导入StringRedisTemplate对象,服务中我们就可以直接注入使用了)
                                            • 具体内容后面源码章节详解

                                              SpringBoot基础(一):快速入门

                                              2.3、parent和starter的区别

                                              • parent是定义了几百种依赖版本号
                                                • 以前写依赖需要自己手工控制版本,现在由SpringBoot统一管理,这样就不存在版本冲突了
                                                • 用来减少依赖冲突的
                                                • starter是一个坐标中定了若干个坐标
                                                  • 以前写多个的,现在写一个
                                                  • 用来减少依赖配置的书写量

                                                    3、启动类

                                                    • Spring程序运行的基础是需要创建自己的Spring容器对象(IoC容器)
                                                    • 将所有的对象交给Spring的容器管理,也就是一个一个的Bean
                                                    • 当前这个类运行后就会产生一个Spring容器对象,通过容器对象可以直接操作Bean
                                                    • 默认扫描包为启动类所在包及其子包
                                                      @SpringBootApplication
                                                      public class SpringBootMainApplication {
                                                          public static void main(String[] args) {
                                                              //获取ioc容器
                                                              ConfigurableApplicationContext context = SpringApplication.run(SpringBootMainApplication.class, args);
                                                              //获取组件
                                                              User user = context.getBean(User.class);
                                                              System.out.println(user);
                                                          }
                                                      }
                                                      

                                                      4、内嵌Tomcat运行原理

                                                      • 从上面说到的内嵌tomcat的spring-boot-starter-tomcat说起
                                                          org.springframework.boot
                                                          spring-boot-starter-tomcat
                                                          2.7.11
                                                          compile
                                                        
                                                        
                                                        • 这里导入了很多tomcat相关依赖

                                                          SpringBoot基础(一):快速入门

                                                            从上面说到的spring-boot-autoconfigure的jar包里的配置类,找到ServletWebServerFactoryAutoConfigurationServletWeb服务器工厂自动配置。

                                                            Tomcat类来自于tomcat-embed-core-9.0.74.jar,由于导入这个jar,才能创建Tomcat容器工厂类,后续才能创建Tomcat容器并启动。

                                                          SpringBoot基础(一):快速入门

                                                          • 这里简单截图说下tomcat启动流程

                                                            创建Tomcat

                                                            SpringBoot基础(一):快速入门

                                                            启动Tomcat

                                                            SpringBoot基础(一):快速入门

                                                            挂起Tomcat,这也就是启动类main函数不会执行结束的原因

                                                            SpringBoot基础(一):快速入门

                                                            • 这里只是简单介绍下,后续关于tomcat的源码章节详解
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码