大清朝早亡了,还没有入门 Spring Boot?
由于读者的数量越来越多,难免会被问到一些我自己都觉得不好意思的问题,比如说前几天小王就问我:“二哥,快教教我,怎么通过 Spring Boot 创建一个 Hello World 项目啊?”
收到问题的时候,我都惊呆了!什么年头了,还不会用 Spring Boot,大清朝早亡了啊!

没等我发牢骚,小王就紧接着说:“二哥,你先别生气,我投了 14 份简历才在三线小镇的一家小公司找到一份实习工作,不容易啊,领导给我安排了一个小活儿,就是搭一个 Spring Boot 的小项目,估计是测试我的实战能力吧。听说二哥热肠古道,我就抱着试一试的心态添加了你的好友。”
话说到这份上,我的气自然也就消了。随后,我花了五分钟的时间帮他解决了苦恼,没成想,他还发给我了一个小红包,表示对我的感谢。并建议我写一篇文章出来,因为他觉得像他这样的小白还有很多。期初我是有些犹豫的,毕竟网上写 Spring Boot 的文章已经很多了,况且还是“Hello World”,写出来会不会遭人喷啊。但转念一想,哪怕只有一个读者需要也是我们作者应尽的义务啊。于是就有了大家看到的这篇文章。
00、Spring Boot 简介
我猜,大家一定编写过基于 Spring 的应用程序,你就知道一个“Hello World”就需要大量的配置。想一想,我自己都有点怀疑,还能不能创建的出来,尤其是那些 XML 文件,完全敲不出来。
Spring Boot 使您能轻松地创建独立的、生产级的、基于 Spring 且能直接运行的应用程序。我们对 Spring 平台和第三方库有自己的看法,所以您从一开始只会遇到极少的麻烦。
看看 Spring Boot 官网对自己的“王婆卖瓜自卖自夸”,感觉确实优秀啊。这意味着我们只需极少的配置,就可以快速创建一个可以正常运行的 Spring 应用程序。而且这些极少的配置采用的是注解的方式,没有 XML。
总之呢,Spring Boot 是一个轻量级的框架,可以完成基于 Spring 的应用程序的大部分配置工作。
01、使用 Spring Initlallzr 创建 Spring Boot 项目
创建一个 Spring Boot 项目非常简单,通过 Spring Initlallzr(https://start.spring.io/)就可以了。(实际上,我也只是把这个网址扔给了小王。)

1)第一个选项一般选择 Maven(Java 后端项目首选),Gradle 在安卓项目中用的比较多。如果还不太了解 Maven,请查看我以前写的一篇文章:Maven 入门。
2)第二个选项一般选择 Java。
3)第三个选项默认为 2.2.2,Spring Boot 目前最稳定的版本。
4)第四个选项填上项目的路径和名称。
5)第五个选项,我们选择 Spring Web 和 Spring Boot Actuator,表明该项目是一个 Web 项目;Actuator 是 Spring Boot 提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。
选项选择完后,就可以点击【Generate】按钮生成一个初始化的 Spring Boot 项目了。生成的是一个压缩包,导入到 IDE 的时候需要先解压。
02、把 Spring Boot 项目导入 IDEA
最近迷上了 IDEA,所以暂时就不再使用 Eclipse 了。如果实在是不习惯 IDEA,可以选择 Spring 自己的 IDE——STS,基于 Eclipse 的。

PS:导入的过程就省略了,请选择 Maven 就对了。
等待 Maven 把所有的依赖包下载完。

项目的目录结构图如下所示。

1)HelloSpringBootApplication 为项目的入口,带有 main()
方法。我们知道,传统的 Web 项目通常需要放到 Tomcat 等容器下面启动运行,而 main()
方法则预示着该项目可以作为一个 jar 包直接运行——因为 Spring Boot 已经内置了 Tomcat。
2)大家一定对 @SpringBootApplication
注解非常好奇,它的源码大致如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
从这些注解中,我们大致可以窥探出,Spring Boot 项目使用了大量的注解取代了以往繁琐的 xml 配置。
03、编辑 Spring Boot 项目
来看下面这段代码。
@SpringBootApplication
@RestController
public class HelloSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringBootApplication.class, args);
}
@RequestMapping("hello")
public String hello() {
return "Hello World";
}
}
1)@RestController
注解相当于 @ResponseBody
+ @Controller
,意味着请求返回的对象可以直接以 JSON 的格式回显。
2)hello()
方法非常简单,返回一个字符串“Hello World”。@RequestMapping
表明这个方法是一个请求映射。
04、运行 Spring Boot 项目
接下来,我们直接运行 HelloSpringBootApplication
类,这样一个 Spring Boot 项目就启动成功了。

默认端口为 8080。
这时候,可以直接在 IDEA 的 Terminal 面板中测试该项目是否启动成功。

命令行为 curl http://localhost:8080/hello
。之所以不需要项目路径 helloSpringBoot
,是因为默认启动的时候相当于是一个 ROOT 级别的,所以不需要根目录。
curl 是一个常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)和 URL 的合体。curl 的功能非常强大,命令行参数多达几十种。如果运用熟练的话,完全可以取代 Postman。

05、jar 形式运行 Spring Boot 项目
打开 pom.xml,我们可以看到如下内容:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这意味着我们可以通过 maven 命令 mvn clean package
将 Spring Boot 项目打包成 jar 文件。

也可以加上参数用于跳过打包时候的测试:mvn clean package -Dmaven.test.skip
稍等片刻,就可以在 target 目录下看到对应的 jar 包。该 jar 包比起传统的 war 包更具有优势,因为不需要再单独开一个容器来跑项目了,Spring Boot 内置过了。原生的 jar 文件(.jar.original)只有不到 3 kb,非常小,因为没几行代码,但打包后 .jar 文件有 19 M,这说明 Spring Boot 帮我们做了很多肉眼看不到的工作。

直接使用 java -jar helloSpringBoot-0.0.1-SNAPSHOT.jar
命令运行该 jar 包,同样可以看到 Tomcat 的启动信息。

这次,我们使用浏览器来访问一下。

也是 OK 的,这说明我们的第一个 Spring Boot 程序跑起来了。快给自己点个赞。

06、鸣谢
好了,亲爱的读者朋友们,答应小王的文章终于写完了。能看到这里的都是最优秀的程序员,升职加薪就是你了
大清朝早亡了,还没有入门 Spring Boot?的更多相关文章
- Spring Boot 学习方法论-如何正确的入门 Spring Boot
想要入门 Spring Boot,那么什么样的教程是符合初学者学习的(没有太多的Java基础但有一些程序基础或者软件编程知识). 这恰好能够勾出很多问题,比如是文章图文教程适合还是视频教程适合零基础初 ...
- spring boot + vue + element-ui全栈开发入门——spring boot后端开发
前言 本文讲解作为后端的spring boot项目开发流程,如果您还不会配置spring boot环境,就请点击<玩转spring boot——快速开始>,如果您对spring boot还 ...
- .NET程序员如何快入门Spring Boot
本篇文章将教你作为一个.NET程序员如何快入门Spring Boot.你不需要用Eclipse,也不需要用IDEA.已经习惯了VS,其他的IDE-- 但不得不说VS Code很厉害,一用就喜欢.微软给 ...
- 扩展、接管MVC都不会,还说会Spring Boot?
持续原创输出,点击上方蓝字关注我 目录 前言 Spring Boot 版本 如何扩展MVC? 如何自定义一个拦截器? 什么都不配置为什么依然能运行MVC相关的功能? 如何全面接管MVC?[不推荐] 为 ...
- 扩展、接管MVC都不会,还会用Spring Boot?
持续原创输出,点击上方蓝字关注我 目录 前言 Spring Boot 版本 如何扩展MVC? 如何自定义一个拦截器? 什么都不配置为什么依然能运行MVC相关的功能? 如何全面接管MVC?[不推荐] 为 ...
- activeMQ入门+spring boot整合activeMQ
最近想要学习MOM(消息中间件:Message Oriented Middleware),就从比较基础的activeMQ学起,rabbitMQ.zeroMQ.rocketMQ.Kafka等后续再去学习 ...
- Spring Boot 入门教程 | 图文讲解
目录 一.Spring Boot 是什么 二.为什么要使用 Spring Boot 三.快速入门 3.1 创建 Spring Boot 项目 3.2 项目结构 3.3 引入 Web 依赖 3.4 编写 ...
- 161103、Spring Boot 入门
Spring Boot 入门 spring Boot是Spring社区较新的一个项目.该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验 ...
- spring boot + vue + element-ui全栈开发入门——开篇
最近经常看到很多java程序员朋友还在使用Spring 3.x,Spring MVC(struts),JSP.jQuery等这样传统技术.其实,我并不认为这些传统技术不好,而我想表达的是,技术的新旧程 ...
随机推荐
- 参加Windows7深圳社区发布会
昨天下午参加了深圳DotNet俱乐部组织的Windows7深圳社区发布会. 开场:朱兴林,俱乐部简介及Win7的发布情况 Session 1,万洪,Windows7的新特性 Session 2,张善友 ...
- 第 43 章 Baidu Map
43.1. BMap.Circle var point = new BMap.Point(22.111, 114.111); var styleCircleF = { strokeColor:&quo ...
- 【万字长文】别再报班了,一篇文章带你入门Python
本文始发于个人公众号:TechFlow,原创不易,求个关注 最近有许多小伙伴后台联系我,说目前想要学习Python,但是没有一份很好的资料入门.一方面的确现在市面上Python的资料过多,导致新手会不 ...
- POJ 2136 Vertical Histogram(当时写的比较恶心,优化一下)
Vertical Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21223 Accepted: 10048 ...
- muduo网络库源码学习————原子性操作Atomic.h
原子性操作可以做到比互斥锁更小的开销,在多线程编程中原子性操作是非常有用的.Atomic.h文件位于muduo/base下,代码如下: // Use of this source code is go ...
- P1635 跳跃
传送门 观察到\(4x+3=2(2x+1)+1\)以及\(8x+7=2(2(2x+1)+1)+1\) 所以可以把\(xx->2x+12x+1\)当成一个基本变化 则\(xx->4x+3\) ...
- RSA host key has changed
- LeetCode--Sort Array By Parity && N-Repeated Element in Size 2N Array (Easy)
905. Sort Array By Parity (Easy)# Given an array A of non-negative integers, return an array consist ...
- 【Hadoop离线基础总结】oozie调度shell脚本
目录 1.解压官方提供的调度案例 2.创建工作目录 3.拷贝任务模板到工作目录当中去 4.随意准备一个shell脚本 5.修改模板下的配置文件 6.上传调度任务到hdfs上面去 7.执行调度任务 1. ...
- 一、Spring的控制反转(IOC)学习
一.控制反转 1.什么是控制反转? 控制反转(Inversion of Control,缩写为IoC),是面向对象中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(D ...