前置:
学习springBoot 之前 需要学习最基本的SSM 框架以及Maven 知识
一:SpringBoot基础入门
1.1:什么是SpringBoot
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。
1.2:快速创建SpringBoot 的4种方式
1.2.1:利用IDEA 快速搭建
选择一个web项目,选择springweb技术,然后next
如下一个基于IDEA 的springboot项目就创建好了,里面会替咱们创建一个引导类,这个引导类里面的main方法就是工程启动入口
1.2.2:利用springboot官方地址创建sorpingboot项目
1.2.3: 利用阿里快速搭建 (当https://start.spring.io/ 访问特别慢时候)
将IDEA 第一步种 https://start.spring.io/ 改为 https://start.aliyun.com/ 即可
注意 阿里云的springboot 坐标版本一般都很低 可以先创建然后在pom文件中手动切换版本
1.2.4:本地手动快速搭建(当没网的时候)
创建普通maven 项目,直接导入坐标,然后手动创建引导类
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
</parent>
<groupId>com.aming</groupId>
<artifactId>springboot_01_test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
package com.aming;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ApplicationTest {
public static void main(String[] args) {
SpringApplication.run(ApplicationTest.class,args);
}
}
注意这里前提是本地仓库中有springboot2.5.4 这个版本
1.3:初步解析pom
Spring程序缺点 :
依赖设置繁琐 配置繁琐
SpringBoot程序优点 :
起步依赖(简化依赖配置) 自动配置(简化常用工程相关配置) 辅助功能(内置服务器等)
那么springboot 怎么实现以上优点的呢?parent ,starter , 引导类 , 内嵌tomcat
1.3.1:parent
.开发SpringBoot程序要继承spring-boot-starter-parent 因为 spring-boot-starter-parent中定义了若干个依赖管理 继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突 继承parent的形式也可以采用引入依赖的形式实现效果
实际开发 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,除非SpringBoot未提供对应版本V 如发生坐标错误,再指定Version 要小心版本冲突
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
</parent>
1.3.2:starter
开发SpringBoot程序需要导入坐标时通常导入对应的starter, 每个不同的starter根据功能不同,通常包含多个依赖坐标 使用starter可以实现快速配置的效果,达到简化配置的目的
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
1.3.3:引导类
咱们看下run方法的返回值就可以清楚看到,SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目,在执行main方法后 springboot 工程运行后初始化spring容器,扫描引导类所在包 加载bean
1.3.3:辅助功能内置tomcat
咱们直接运行工程后可以发现,项目直接替我们用tomcat发布了,那么tomcat到底在哪里呢?
咱们 进入spring-boot-starter-web 里面发现了tomcat,再进去会发现引入tomcat核心依赖,
原理是将Tomcat服务器作为对象运行,并 将该对象交给Spring容器管理,从而实现内置内嵌Tomcat效果
如果 不用tomcat 呢?则再配置文件中排除tomcat起步依赖,将自己需要的服务器起步依赖引入即可
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--web起步依赖环境中,排除Tomcat起步依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加Jetty起步依赖,版本由SpringBoot的starter控制-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
</dependencies>
我们常见的内置服务器 一般有三个tomcat jetty undertow
tomcat(最常用):apache的产品,用的企业多,应用面广,负载了若干较重的组件
jetty:更轻量级,但是负载性能远不及tomcat
undertow : 负载性能勉强跑赢tomcat