源码精品专栏

  • 中文详细注释的开源项目
  • RPC 框架 Dubbo 源码解析
  • 网络应用框架 Netty 源码解析
  • 消息中间件 RocketMQ 源码解析
  • 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析
  • 作业调度中间件 Elastic-Job 源码解析
  • 分布式事务中间件 TCC-Transaction 源码解析
  • Eureka 和 Hystrix 源码解析
  • Java 并发源码

爽!不解释!
六月份的尾巴,水滴石穿!继续加油~

  • 1. 概述
  • 2. 快速入门
  • 3. Spring Initializr
  • 4. IDEA x Spring Initializr

Java进阶:架构设计、并发编程等核心知识、电子书、视频、面试题等免费获取​shimo.im

1. 概述

我们先来简单了解下 Spring Boot 是什么?其官方介绍自己如下:

“FROM 《Spring 中文文档 —— Spring Boot 简介》使用 Spring Boot 可以很容易地创建出能直接运行的独立的、生产级别的基于 Spring 的应用。 我们对 Spring 平台和第三方类库有自己的考虑,因此您可以从最基本的开始。大多数 Spring Boot 应用只需要很少的 Spring 配置。
您可以使用 Spring Boot 来创建一个可以使用 java -jar 命令来运行或者基于传统的 war 包部署的应用程序。我们还提供了一个用于运行 spring scripts 的命令行工具。
我们的主要目标是:

  • 为所有 Spring Boot 开发提供一个更快、更全面的入门体验。
  • 坚持自我虽好,但当需求出现偏离,您需要能迅速摆脱出来。
  • 提供大量非功能性特性相关项目(例如:内嵌服务器、安全、指标、健康检查、外部配置)。
  • 绝对没有代码生成,也不要求 XML 配置。

是不是看着有点懵逼?重点先理解是加粗的两句话。简单来说,通过使用 Spring Boot,我们无需再进行大量的 Spring 配置,只需要少量甚至零配置。

可能这么说还是有点抽象,我们直接来动手,奥利给,干就完事了!

2. 快速入门

本小节,我们搭建 Spring Boot 示例项目,并在其中使用 SpringMVC 来提供一个简单的 HTTP API。

在开始搭建示例项目之前,胖友需要先做好如下准备:

  • JDK8+
    “友情提示:Spring Boot 2.X 版本,需要最低的 Java 版本是 8。
  • Maven
    “本文希望胖友对 Maven 构建工具有过一定的了解。如果没有的话,可以看看《Maven最全教程,看了必懂》文章。
  • IDEA
    “宇宙最强 Java 开发者工具,没有之一。

2.1 创建 Maven 项目

① 打开 IDEA,点击菜单 File -> New -> Project... 来创建项目。如下图所示:

② 选择 Maven 类型,点击「Next」按钮,进入下一步。输入 Maven 的 GroupIdArtifactId,如下图所示:

③ 点击「Next」按钮,继续进入下一步。如下图所示:

④ 点击「Finish」按钮,完成 Maven 项目的创建。此时项目如下图所示:

最终,我们的示例项目会如下图所示:

下面,我们逐步来看看。

2.2 引入依赖

pom.xml 文件中,引入相关依赖。

<?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><groupId>cn.iocoder</groupId><artifactId>demo01</artifactId><version>1.0-SNAPSHOT</version><!-- 从 Spring Boot 继承默认配置 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><dependencies><!-- 实现对 SpringMVC 的自动化配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

  • 引入 spring-boot-starter-parent 作为父 POM,从而继承其默认配置。
    “友情提示:考虑到一般公司项目中都已经有自己的父 POM,可以参考文档修改。
  • 引入 spring-boot-starter-web 依赖,实现对 SpringMVC 的自动化配置。同时该依赖会自动帮我们引入 SpringMVC 等相关依赖。

2.3 配置文件

在 Spring Boot 项目中,约定通过 application.yaml 配置文件,进行 Spring Boot 自动配置的 Bean 的自定义。

resource 目录下,创建 application.yaml 配置文件。内容如下:

server:port: 8080 # 内嵌的 Tomcat 端口号。默认值为 8080。

  • 通过 server.port 配置项,设置稍后启动的内嵌 Tomcat 端口为 8080 端口。

“友情提示:关于配置文件,后续胖友可以阅读《芋道 Spring Boot 配置文件入门》文章。

2.4 DemoController

创建 DemoController 类,提供一个简单的 HTTP API。代码如下:

@RestController
@RequestMapping("/demo")
public class DemoController {@GetMapping("/echo")public String echo() {return "echo";}}

  • 标准的 SpringMVC 使用示例,没有什么特别哈。

2.5 Application

创建 Application 类,提供 Spring Boot 应用的启动类。代码如下:

@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

  • 在类上,添加 @SpringBootApplication 注解,声明是一个 Spring Boot 应用。通过该注解,可以带来 Spring Boot 自动配置等等功能。
  • #main(String[] args) 方法中,我们通过 SpringApplication#run(Class<?> primarySource, String... args) 方法,启动 Spring Boot 应用。

2.6 简单测试

① 执行 Application#main(String[] args) 方法,启动示例项目。

这里我们会发现,我们无需在部署 Web 项目到外部的 Tomcat 中,而是直接通过 Application#main(String[] args) 方法,就可以直接启动,非常方便。完全符合 Spring Boot 文档对自己的介绍:

“使用 Spring Boot 可以很容易地创建出能直接运行的独立的、生产级别的基于 Spring 的应用。

② 此时,我们可以看到 IDEA 控制台输出 Spring Boot 启动日志如下:

// Spring Boot 自带 Banner.   ____          _            __ _ _/ / ___'_ __ _ _(_)_ __  __ _
( ( )___ | '_ | '_| | '_ / _` |    /  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |___, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::        (v2.2.2.RELEASE)// 启动 Java 进程使用的 PID 进程号
2020-02-08 15:38:25.724  INFO 10645 --- [           main] cn.iocoder.demo01.Application            : Starting Application on MacBook-Pro-8 with PID 10645 (/Users/yunai/Java/demo01/target/classes started by yunai in /Users/yunai/Java/demo01)
// Spring Boot Profile 机制,暂时可以忽略
2020-02-08 15:38:25.727  INFO 10645 --- [           main] cn.iocoder.demo01.Application            : No active profile set, falling back to default profiles: default
// 内嵌 Tomcat 启动
2020-02-08 15:38:26.503  INFO 10645 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-02-08 15:38:26.510  INFO 10645 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-02-08 15:38:26.510  INFO 10645 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
2020-02-08 15:38:26.561  INFO 10645 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-02-08 15:38:26.561  INFO 10645 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 799 ms
2020-02-08 15:38:26.693  INFO 10645 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-02-08 15:38:26.839  INFO 10645 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-02-08 15:38:26.842  INFO 10645 --- [           main] cn.iocoder.demo01.Application            : Started Application in 1.396 seconds (JVM running for 1.955)
// SpringMVC DispatcherServlet 初始化
2020-02-08 15:38:44.992  INFO 10645 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-02-08 15:38:44.992  INFO 10645 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-02-08 15:38:44.996  INFO 10645 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms
// ... 暂时可以忽略
2020-02-08 15:39:37.113  INFO 10645 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

  • 注意,以 // 开头的每一行,是艿艿添加的注释哟,胖友仔细看看。

有木有发现,Logger 日志组件,Spring Boot 都已经帮我们自动配置好啦。是不是很舒服~

③ 使用浏览器,访问 http://127.0.0.1:8080/demo/echo 接口,返回结果为 "echo"

这说明,SpringMVC 框架,也被 Spring Boot 自动配置完成。同时,使用的是内嵌的 Tomcat 服务器。


至此,我们已经进行了 Spring Boot 的快速入门。后续,胖友可以阅读《芋道 Spring Boot SpringMVC 入门》文章,进一步的学习。

另外,Spring Boot 自动配置是个很神器,胖友一定一定一定要去阅读《芋道 Spring Boot 自动配置原理》。知其然,知其所以然。千万不要只停留在入门或者使用的层级上,而是要不断死磕。

3. Spring Initializr

我们可以通过使用 Spring Initializr 工具,快速生成一个 Spring Boot 项目。如下图所示:

下面,我们就来使用 Spring Initializr 来搭建一个示例。

3.1 生成项目

① 使用浏览器,打开 http://start.spring.io/ 地址,配置如下图所示:

② 点击「Explore」按钮,浏览生成的项目。如下图所示:

还是蛮酷炫的,可以在线直接浏览即将生成的项目。

③ 关闭弹窗,然后点击「Generate」按钮,生成项目,会以 .zip 压缩包的方式进行下载。

3.2 导入 IDEA

① 解压 .zip 压缩包,用于稍后导入 IDEA 中。

② 打开 IDEA,点击菜单 File -> Project from Existing Sources... 来导入项目。如下图所示:导入项目

③ 然后 Maven 类型,然后不断点击「Next」按钮,最终完成项目的导入。此时项目如下图所示:项目结构

“友情提示:如果胖友选择的 Spring Boot 版本比较新,可能需要耐心等待下,IDEA 需要等待 Maven 下载相关依赖。

  • resource/static 目录,放静态资源。例如说,js、css、图片等等。
  • resource/templates 目录,放页面模板。例如说,thymeleaf、freemarker 等等。

下面,我们逐步来看看。

3.3 引入依赖

pom.xml 文件中,引入相关依赖。

<?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.2.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.iocoder</groupId><artifactId>demo02</artifactId><version>0.0.1-SNAPSHOT</version><name>demo02</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

我们只说差异的地方哈:

  • 设置 <java.version> 属性为 1.8,表示使用 JDK8。
  • 引入 spring-boot-starter-test 依赖,实现对 Test 的自动化配置。
    “友情提示:对在 Spring Boot 进行单元测试感兴趣的胖友,可以后续阅读《芋道 Spring Boot 单元测试 Test 入门》文章。
  • 引入 spring-boot-maven-plugin 插件,用于将 Spring Boot 项目打包成 jar 或者 war 包。
    “友情提示:对构建 Spring Boot 项目感兴趣的胖友,可以后续阅读《芋道 Spring Boot 持续交付 Jenkins 入门》文章。

3.4 配置文件

配置文件 application.properties 内容为空。

注意,Spring Boot 支持 YAML、PROPERTIES、JSON 等等格式的配置格式。

3.5 Demo02Application

Demo02Application 类,提供 Spring Boot 应用的启动类。代码如下:

@SpringBootApplication
public class Demo02Application {public static void main(String[] args) {SpringApplication.run(Demo02Application.class, args);}}

还是老样子,通过执行 #main(String[] args) 方法,启动 Spring Boot 应用。这里,艿艿就不演示了,胖友自己去倒腾哈。

3.6 Demo02ApplicationTests

Demo02ApplicationTests 类,单元测试类。代码如下:

@SpringBootTest
class Demo02ApplicationTests {@Testvoid contextLoads() {}}

  • 在类上,添加 @SpringBootTest 注解,声明这是一个 Spring Boot 环境下的单元测试类。

运行 #contextLoads() 方法,执行一次单元测试。

4. IDEA x Spring Initializr

IDEA 内置了 Spring Boot 插件,提供了对 Spring Initializr 集成。

“Spring Boot / Spring Initializr project wizard.

下面,我们来使用该插件,创建一个 Spring Boot 项目。

① 打开 IDEA,点击菜单 File -> New -> Project... 来创建项目。如下图所示:

② 选择 Spring Initializr 类型,点击「Next」按钮,进入下一步。输入 Maven 的 GroupIdArtifactId,如下图所示:

③ 点击「Next」按钮,选择需要的依赖,这里暂时我们只需要 Web 依赖。如下图所示:

④ 点击「Next」按钮,之后点击「Finish」按钮,完成 Maven 项目的创建。此时项目如下图所示:

和「3. Spring Initializr」是一致的,就不哔哔重复解释了。

喜欢的小伙伴们点赞、评论、分享、收藏。

谢谢各位大大!

springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列相关推荐

  1. springboot 中文文档_比Swagger还好用的自动生成接口文档工具

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...

  2. springboot 中文文档_还在用 Swagger生成接口文档?我推荐你试试它

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...

  3. pyppeteer有java版本吗_Pyppeteer中文文档_序言_安装_基本使用及注意事项

    Pyppeteer中文文档_序言_安装_基本使用及注意事项 Pyppeteer是Puppeteer Javascript(无头) chrome/chromium 浏览器自动化库的Python非官方端口 ...

  4. SpringBoot中文文档 SpringBoot中文参考指南 SpringBoot中文参考文档 springboot中文文档 springboot中文

    SpringBoot中文文档 SpringBoot中文参考指南 SpringBoot中文参考文档 springboot中文文档 springboot中文 SpringBoot中文文档 SpringBo ...

  5. aspose excel中文文档_除了VBA,还有哪些编程语言可以操作Excel文件?

    Excel(Microsoft office)是现在最常用的办公软件,主要涉及电子表格制作.数据处理.报表输出展示以及更高端的还有金融建模等:我们知道,在需要批处理多个Excel工作表以及工作簿的时候 ...

  6. spring-boot中文文档

    作者:Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, ...

  7. oracle中文文档_如果你还在用Swagger(丝袜哥)生成接口文档,那就真有点老“土”了!...

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...

  8. Springboot 中文文档 —— Actuator

    文章目录 1 **启用** 2 **端点(endpoints)** 2.1 启用端点 2.2 公开端点 2.3 保护HTTP端点 2.4 配置端点缓存 2.5 配置 /actuator 路径 2.6 ...

  9. keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)

    版权声明:小博主水平有限,希望大家多多指导. 目录: [使用传统DNN] BG大龍:[DL项目实战02]图像分类--Keras框架+使用传统神经网络DNN​zhuanlan.zhihu.com [使用 ...

最新文章

  1. 分享Kali Linux 2017年第24周镜像文件
  2. mysql游标循环的使用
  3. VR开发从何入手的实战分享
  4. 3_10 MediaMode 中介者模式
  5. Docker的官网在线--中文教程
  6. c语言三阶素数魔方阵,用C语言构造3*3素数魔方阵,即找出9个不大于500的素数并排成魔方阵。...
  7. 【Java从0到架构师】交错的日志系统、SpringBoot 集成日志框架
  8. Oracle下载 OPatch
  9. 阿里云MaxCompute中pyODPS的使用:多线程上传、下载、分区
  10. java语法特点_Java 语言特点
  11. WMS软件国内主要供应商分析
  12. VS Code 创建HTML页面教程
  13. Win11麦克风有回音怎么消除 Win11麦克风回声怎么调
  14. deno计算机语言什么意思,一篇文章告诉你什么是Deno!
  15. Kindle3之中文乱码问题
  16. Python|自制二维码生成器
  17. 做IT工作应有的10个好习惯
  18. 第三届中国移动开发者大会(MDCON.2015)
  19. 为什么需要虚拟DOM?
  20. scheme的应用序

热门文章

  1. C++ 互斥锁和条件变量实现读写锁
  2. leetcode-45 跳跃游戏II
  3. Spring基础面试题(一)
  4. 20162325 金立清 S2 W8 C17
  5. 【C++】 保存内容到文件工具
  6. ARKit 与 ARCore比对(三)
  7. ASP.NET设置数据格式与String.Format使用总结
  8. linux环境insight安装与使用
  9. Redis源码解析——字典遍历
  10. 在windows程序中嵌入Lua脚本引擎--编写自己的Lua库