专栏首页纯洁的微笑小白都能看懂的 Spring Boot 入门指南!

小白都能看懂的 Spring Boot 入门指南!

什么是Spring Boot

Spring Boot 是 Spring 开源组织下的一个子项目,也是 Spring 组件一站式解决方案,主要是为了简化使用 Spring 框架的难度和简化 Spring 框架复杂的XML配置。使用 Spring Boot 可以很容易创建一个独立运行的、基于 Spring 的生产级应用程序,而且Spring Boot 对 Spring 平台和第三方库做了一些版本适配,这样我们就可以尽快的上手。

使用 Spring Boot 来不仅可以创建基于 war 方式部署的传统Java应用程序,也可以通过创建独立的不依赖任何容器(如 tomcat 等)的应用,只需使用 “java -jar” 就能启动。Spring Boot 还提供了一个运行 "spring scripts " 的命令行工具。

Spring Boot 的设计目标

为所有的 Spring 开发提供一个从根本上更快、更广泛的入门体验。
开箱即用,但当需求开始偏离默认值时,可以快速从中解放出来使用个性化的定制。
提供一系列大型应用项目中经常用到的公共的非功能特性(如嵌入式服务器、安全、度量、健康检查和外部化配置)。
零代码生成零XML配置。

第一个 Spring Boot 应用程序

我们在学习一门新的开发语言,或者开发框架的时候,一般都习惯写个 Hello World 的项目。一方面可以验证基础环境的搭建是否正确,另一方面可以快速了解整个开发流程。现在我们创建一个 Hello world 的 Spring Boot 项目。我这里使用的IDE 是 Intellij IDEA 。

第一步

打开Intellij IDEA 使用 Spring Initializr 向导 新建 Hello World的项目

选择 Spring Web, 然后点击 Finish 等待项目创建完成。

第二步

项目已经创建完成。下面我们来看一下项目结构:

来看下 HelloApplication 入口类的内容, HelloApplication 里面定义了一个 main 函数,一个基本的 @SpringBootApplication 注解。后续的文章会详细解释一下 @SpringBootApplication 注解。现在我们只要知道有了 @SpringBootApplication 注解,所有的 Spring Boot 项目依赖都可以扫描加入进来。

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

再看一下 pom.xml 文件有那些依赖项目, POM 文件主要依赖了spring-boot-starter-web 项目,该项目包含了 web 项目所需的相关依赖,包括内置了 tomcat 服务器。另外还有一个比较重要的插件 spring-boot-maven-plugin,方便我们可以对 Spring Boot 项目打包成一个独立运行的 jar 包。

<?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 https://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.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.javanorth</groupId>
    <artifactId>hello</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>hello</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>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

第三步

修改 HelloApplication 主类,添加一个/hello 的请求

@RestController
@SpringBootApplication
public class HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }
    @GetMapping("/hello")
    public String hello() {
        return "Hello World";
    }
}

第四步

在主类上,右键菜单栏里选择 Run “HelloApplication” 命令,启动项目。如下图所示,2秒钟就能启动完成。从输出日志可以看出,项目启动了内置的 tomcat 服务器,分配了8080 作为本次 web 服务器的请求端口。

好了,我们现在访问一下 /hello 请求, 如下图所示,输出了 Hello World。

是不是很简单,我们很快就上手完成了第一个 Hello World 应用。

第五步

我们再来看下,如何打包一个 Spring Boot 项目呢?前文我们已经提到了 spring-boot-maven-plugin 插件,所以我们可以使用mvn package 来对其进行打包

$ mvn package 
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------< com.javanorth:hello >-------------------------
[INFO] Building hello 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ...
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ hello ---
[INFO] Building jar: /Users/wbf/Documents/javanorth/target/hello-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.5.0:repackage (repackage) @ hello ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.065 s
[INFO] Finished at: 2021-05-27T16:33:17+08:00
[INFO] ------------------------------------------------------------------------

打包完成,查看 target 目录,我们能看到 hello-0.0.1-SNAPSHOT.jar 文件。

从上图可以看到有个名字相类似的文件,hello-0.0.1-SNAPSHOT.jar.original 文件是 Spring Boot repackage 之前的文件,也就是说这个文件其实就是 maven 创建的原始jar文件,不包含其他依赖的jar包。

如果我们想看一下 hello-0.0.1-SNAPSHOT.jar 里面包含那些内容,有没有什么快速的办法呢,我这里给大家提供一个命令行的方法,使用 “jar tvf ” 就行。

jar tvf hello-0.0.1-SNAPSHOT.jar

小结

从上面的示例可以看出开始一个新的 Spring Boot 项目非常简单,Spring Boot 提供了专门的创建向导项目,简化了大量的 Spring 项目的创建难度。全程下来不到5分钟,我们就完成了项目的创建和 hello world 的输出演示。

本文分享自微信公众号 - 纯洁的微笑(keeppuresmile)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 技术 | 小白都能看懂的缓存入门

    缓存是程序员必须了解的技术,无论是前端、后端还是客户端,大到复杂的系统架构,小到 CPU 或是芯片,都少不了缓存的影子。

    程序员鱼皮
  • 小白也能看懂的seaborn入门示例

    Seaborn就是让困难的东西更加简单。它是针对统计绘图的,一般来说,能满足数据分析90%的绘图需求。Seaborn其实是在matplotlib的基础上进行了更...

    1480
  • 小白必看:神经网络入门指南

    你是否想知道大家都在谈论的神经网络到底是什么,但你又不敢去问?哈哈,别再害怕了!读了这篇文章,你将能够走进任何一个会议,用你新获得的流行词在午餐桌上大放异彩!

    AI研习社
  • 五分钟学Java:一篇文章带你搞懂spring全家桶套餐

    上期我们讲了spring和springmvc两个框架的基础知识和学习路线,而这期内容,我们将围绕着spring全家桶展开来讨论。

    黄小斜学Java
  • 学习 Java,有什么书籍推荐?学习的方法和过程是怎样的?

    为什么要学 Linux 呢?因为在实际的开发工作中,项目基本上都要部署到 Linux 环境下。Windows 作为服务器的很少,除了慢没别的原因。

    AI码师
  • 2019年2月份Github上收获最多Star的10个Java项目

    cxuan
  • 小白都能看懂的简单爬虫入门案例剖析(爬虫入门看它就够了!)

    Hello!大家好,我是努力赚钱买生发水的灰小猿,很多学习了Python的小伙伴都希望可以拥有一条属于自己的爬虫,所以今天大灰狼就来和小伙伴们分享一下简单的爬虫...

    灰小猿
  • 【阅读清单】系列文章清单列表(三)

    分布式系统学习 https://cloud.tencent.com/developer/inventory/2708

    云加社区
  • Python入门_给小白的学习指南

    python是当下很热门的语言,我在入门python时花的时间特别长,一方面是自学,另一方面是这个东西对新人很不友好。因此,我写下这篇文章,希望能对想从零开始学...

    用户7886150
  • 「核心基础篇」Guide的Java后端书架来啦!都是Java程序员必看的书籍?

    封面是在武汉租的房子里的一个小书架,基本都是今年买的书,所以看着不是很多。每次看完一本书之后,我都会带回家里,避免占位置以及搬家的时候太麻烦了。

    Guide哥
  • 给小迷妹的一点肺腑之言!

    我今年 51 岁(夸张手法)了,使用 Java 开发将近 30 年了,目前还在技术一线。

    沉默王二
  • 看了B站上的这些Java视频,我飘了!

    处在互联网时代,是一种幸福,因为各式各样的信息非常容易触达,如果掌握了信息筛选的能力,就真的是“运筹帷幄之中,决胜千里之外”。

    Guide哥
  • Docker 极简入门指南,10 分钟就能看懂

    富 Web 时代,应用变得越来越强大,与此同时也越来越复杂。集群部署、隔离环境、灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁。本节我们就来探索一下...

    子润先生
  • 2019 Java 全栈工程师进阶路线图,一定要收藏!

    技术更新日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的。

    江南一点雨
  • gitbook 入门教程之小白都能看懂的 Gitbook 插件开发全流程

    只要是 Gitbook 默认没有提供的功能,基于插件机制都可以自行扩展,是插件让 Gitbook 变得更加强大.

    雪之梦技术驿站
  • 新手福利,通过一个简单示例快速上手Spring Boot+Vue前后端分离

    Vue + Element UI 并不是真正的前后端分离,它只有前端服务,并没有后端服务提供数据接口,很多小伙伴在后台留言希望楠哥能写一篇完整的 Spring ...

    南风
  • 校招进大厂,分享 Tom哥的读书单

    大家好,我是Tom哥。校招进阿里,研究生,P7技术专家,出过专利,竞赛拿过奖,CSDN博客专家,负责过电商交易、社区生鲜、营销、金融等业务,多年团队管理经验,爱...

    用户7676729
  • 分享:个人是怎么学习新知识的

    挺多童鞋问我是怎么学习新知识的,干脆写篇文章总结一下,希望对大家有所帮助。对照书、技术博客、极客时间等学习的方式我就不说了。

    用户1516716
  • 【阅读清单】有奖内测体验活动

    完成了内测体验的小伙伴,可以填写问卷,活动结束后我们将统一进行审核,审核结束就进行礼品发放。问卷链接:https://wj.qq.com/s2/7433898/...

    云加社区

扫码关注云+社区

领取腾讯云代金券