由于读者的数量越来越多,难免会被问到一些我自己都觉得不好意思的问题,比如说前几天小王就问我:“二哥,快教教我,怎么通过 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?的更多相关文章

  1. Spring Boot 学习方法论-如何正确的入门 Spring Boot

    想要入门 Spring Boot,那么什么样的教程是符合初学者学习的(没有太多的Java基础但有一些程序基础或者软件编程知识). 这恰好能够勾出很多问题,比如是文章图文教程适合还是视频教程适合零基础初 ...

  2. spring boot + vue + element-ui全栈开发入门——spring boot后端开发

    前言 本文讲解作为后端的spring boot项目开发流程,如果您还不会配置spring boot环境,就请点击<玩转spring boot——快速开始>,如果您对spring boot还 ...

  3. .NET程序员如何快入门Spring Boot

    本篇文章将教你作为一个.NET程序员如何快入门Spring Boot.你不需要用Eclipse,也不需要用IDEA.已经习惯了VS,其他的IDE-- 但不得不说VS Code很厉害,一用就喜欢.微软给 ...

  4. 扩展、接管MVC都不会,还说会Spring Boot?

    持续原创输出,点击上方蓝字关注我 目录 前言 Spring Boot 版本 如何扩展MVC? 如何自定义一个拦截器? 什么都不配置为什么依然能运行MVC相关的功能? 如何全面接管MVC?[不推荐] 为 ...

  5. 扩展、接管MVC都不会,还会用Spring Boot?

    持续原创输出,点击上方蓝字关注我 目录 前言 Spring Boot 版本 如何扩展MVC? 如何自定义一个拦截器? 什么都不配置为什么依然能运行MVC相关的功能? 如何全面接管MVC?[不推荐] 为 ...

  6. activeMQ入门+spring boot整合activeMQ

    最近想要学习MOM(消息中间件:Message Oriented Middleware),就从比较基础的activeMQ学起,rabbitMQ.zeroMQ.rocketMQ.Kafka等后续再去学习 ...

  7. Spring Boot 入门教程 | 图文讲解

    目录 一.Spring Boot 是什么 二.为什么要使用 Spring Boot 三.快速入门 3.1 创建 Spring Boot 项目 3.2 项目结构 3.3 引入 Web 依赖 3.4 编写 ...

  8. 161103、Spring Boot 入门

    Spring Boot 入门 spring Boot是Spring社区较新的一个项目.该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验 ...

  9. spring boot + vue + element-ui全栈开发入门——开篇

    最近经常看到很多java程序员朋友还在使用Spring 3.x,Spring MVC(struts),JSP.jQuery等这样传统技术.其实,我并不认为这些传统技术不好,而我想表达的是,技术的新旧程 ...

随机推荐

  1. diskpart 分区,挂载,和移除

    list disk select disk 1 clean Create partition primary size=102400 active format quick list volume a ...

  2. Spring Cloud 系列之 Stream 消息驱动(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Stream 消息驱动(一) 本篇文章讲解 Stream 如何实现消息分组和消息分区. 消息分组 如果有多个消息消费者 ...

  3. 美版健康码要来了!苹果Google被网友质疑:这是变相的监视系统吗?

    4 月 30 日消息,据外媒报道,由苹果和谷歌合作开发一个冠状病毒追踪系统将在 5 月 1 日正式上架,今天已经进入测试阶段. 图自:techcrunch 这款应用可以让 iOS 和 Android ...

  4. B/S和C/S架构的区别

    一.B/S架构 什么是B/S模式 B/S模式,即浏览器/服务器模式,是一种从传统的二层CS模式发展起来的新的网络结构模式,其本质是三层结构C/S模式.B/S网络结构模式是基于Intranet的需求而出 ...

  5. Django 内置分页的简单使用

    1, 文档 https://docs.djangoproject.com/en/1.11.1/topics/pagination/ 2,视图 from django.core.paginator im ...

  6. INTERVIEW #1

    一.数据对齐存储 在32位系统中:int占4Bytes,short占2Bytes,char占1Byte,加起来应该是7Bytes,但是下面这段代码输出却是8. #define _CRT_SECURE_ ...

  7. 图论--割点--Tarjan

    #include<iostream> #include<stdio.h> #include<vector> using namespace std; const i ...

  8. 上传组件Fine Uploader在ASP.NET中的应用

    现如今,世面上流行着许多前端上传组件,例如:Uploadify(http://www.uploadify.com/),Fine Uploader,等等.这篇博客从头开始,介绍如何在ASP.NET MV ...

  9. 使用kubeadm部署k8s集群[v1.18.0]

    使用kubeadm部署k8s集群 环境 IP地址 主机名 节点 10.0.0.63 k8s-master1 master1 10.0.0.63 k8s-master2 master2 10.0.0.6 ...

  10. print函数的全面认识

    # 输出打印 数字 print(123) a = 100 print(a) # 输出打印 字符串 print('字符串123') print('''锄禾日当午 汗滴禾下土''') # 输出打印 列表 ...