SpringBoot01 —— 概览及Demo运行

概述:SpringBoot入门程序搭建和运行

概览

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程

Spring程序缺点

  • 依赖设置繁琐
  • 配置繁琐

SpringBoot程序优点

  • 起步依赖(简化依赖配置)
  • 自动配置(简化常用工程相关配置)
  • 辅助功能(内置服务器,……)

快速构建一个SpringMVC控制器程序

IDEA新建项目

查看版本:File -> Settings -> Maven 可以查看版本(我的版本为3.8.1)

File -> Project Structure -> Modules -> ‘+’ ->New Module -> Spring Initializr (注意如果没有的话要去settings ->plugins -> marketplace 下搜索并下载)

进行如下配置

image01

SpringBoot程序中需要使用何种功能即勾选选择技术,目前选择spring web

基础的环境配置即完成了

开发控制器类

入门案例制作的SpringMVC的控制器基于Rest风格开发.

以下程序中的@RestController@GetMapping注解是基于Restful开发的典型注解。

1
2
3
4
5
6
7
8
9
10
//Rest模式
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getById(){
System.out.println("springboot is running...");
return "springboot is running...";
}
}

使用带main方法的java程序的运行形式来运行程序(运行SpringBoot程序通过运行Application程序入口进行)

1
2
3
4
5
6
7
8
9
10
11
12
@SpringBootApplication
public class Springboot0101QuickstartApplication {

public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Springboot0101QuickstartApplication.class, args);
BookController bean = ctx.getBean(BookController.class);
System.out.println("bean======>" + bean);
User user = ctx.getBean(User.class);
System.out.println(user);
}

}

运行结果

Spring程序与SpringBoot程序对比:

注意基于IDEA开发SpringBoot程序需要确保联网并且能够加载到程序框架结构

如果无法联网(外网连接慢):

  • 进入Spring的官网

  • 通过项目一级一级的找到SpringBoot技术的介绍页,然后在页面中间部位找到如下内容

  • 点击Spring Initializr后进入到创建SpringBoot程序界面,接下来就是输入信息的过程,和在Idea中制作是一样的,只是界面发生了变化,根据自己的要求,在左侧选择对应信息和输入对应的信息。
  • 右侧的ADD DEPENDENCIES用于选择使用何种技术,和之前勾选的Spring WEB是在做同一件事,仅仅是界面不同而已,点击后打开网页版的技术选择界面。
  • 所有信息设置完毕后,点击下面左侧GENERATE按钮,生成一个文件包。
  • 保存后得到一个压缩文件,这个文件就是创建的SpringBoot工程
  • 解压缩此文件得到工程目录,在Idea中导入即可直接使用,和之前在Idea环境下根据向导创建的工程完全一样

实际上,Idea工具中创建SpringBoot工程其实连接的就是SpringBoot的官网,还句话说这种方式和第一种方式是一模一样的,只不过Idea把界面给整合了一下,读取Spring官网信息,然后展示到Idea界面中而已

在Idea中隐藏指定文件/文件夹

Idea中隐藏指定文件或指定类型文件

  • 【Files】→【Settings】
  • 【Editor】→【File Types】→【Ignored Files and Folders】
  • 输入要隐藏的名称,支持*号通配符
  • 回车确认添加

入门案例详解

parent

  • 开发SpringBoot程序要继承spring-boot-starter-parent
  • spring-boot-starter-parent中定义了若干个依赖管理(继承于spring-boot-starter-parent)
  • 继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
  • 继承parent的形式也可以采用引入依赖的形式实现效果(aliyun版本的实现方式)

starter

SpringBoot关注到实际开发时,开发者对于依赖坐标的使用往往都有一些固定的组合方式,比如使用spring-webmvc就一定要使用spring-web。每次都要固定搭配着写,非常繁琐,而且格式固定,没有任何技术含量。

SpringBoot把所有的技术使用的固定搭配格式都给开发出来,以后使用某个技术,就不用每次写一堆依赖了,我给你做一个东西,代表一堆东西,开发者使用的时候,直接用做好的这个东西就好了,对于这样的固定技术搭配,SpringBoot给它起了个名字叫做starter

starter定义了使用某种技术时对于依赖的固定搭配格式,也是一种最佳解决方案,使用starter可以帮助开发者减少依赖配置

实际开发

  • 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,除非SpringBoot未提供对应版本V

  • 如发生坐标错误,再指定Version(要小心版本冲突)

总结

  • 开发SpringBoot程序需要导入坐标时通常导入对应的starter

  • 每个不同的starter根据功能不同,通常包含多个依赖坐标

  • 使用starter可以实现快速配置的效果,达到简化配置的目的

引导类

其实SpringBoot程序启动还是创建了一个Spring容器对象。当前运行的这个类在SpringBoot程序中是所有功能的入口,称为引导类

作为一个引导类最典型的特征就是当前类上方声明了一个注解@SpringBootApplication

启动方式:

1
2
3
4
5
6
@SpringBootApplication
public class Springboot0101QuickstartApplication {
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Springboot0101QuickstartApplication.class, args);
}
}
  • ingBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目

  • SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean

总结

  • SpringBoot工程提供引导类用来启动程序
  • SpringBoot工程启动后创建并初始化Spring容器

内嵌tomcat

当前我们做的SpringBoot入门案例勾选了Spring-web的功能,并且导入了对应的starter。

更换内嵌Tomcat

SpringBoot提供了3款内置的服务器:

  • tomcat(默认) :apache出品,粉丝多,应用面广,负载了若干较重的组件

  • jetty:更轻量级,负载性能远不及tomcat

  • undertow:undertow,负载性能勉强跑赢tomcat

想用哪个,加个坐标就行。前提是把tomcat排除掉,因为tomcat是默认加载的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
</dependencies>

现在就已经成功替换了web服务器,核心思想就是用什么加入对应坐标就可以了。如果有starter,优先使用starter。

总结

  • 内嵌Tomcat服务器是SpringBoot辅助功能之一

  • 内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给Spring容器管理

  • 变更内嵌服务器思想是去除现有服务器,添加全新的服务器

学习链接

  1. SpringBoot reference documentation
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022 ZHU
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信