Spring Boot入门:开发您的第一个Spring Boot应用程序

本节介绍如何开发一个简单的“Hello World!”Web应用程序,该应用程序重点介绍Spring Boot的一些主要功能。我们使用Maven来构建这个项目,因为大多数IDE都支持它。如果具体用Eclipse,可以查看: Spring boot入门:在Eclipse中搭建Spring boot 项目

该spring.io网站包含了许多“入门” 指南使用Spring的引导。如果您需要解决特定问题,请先在那里查看。

您可以通过转到start.spring.io并从依赖关系搜索器中选择“Web”起始器来缩短以下步骤。这样做会产生一个新的项目结构,以便您可以立即开始编码。查看Spring Initializr文档以获取更多详细信息。

在开始之前,请打开终端并运行以下命令以确保您已安装了Java和Maven的有效版本:

$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_102, vendor: Oracle Corporation

此示例需要在其自己的文件夹中创建。后续假定您已经创建了合适的文件夹,并且它是您当前的目录。

11.1创建POM

我们需要先创建一个Maven pom.xml文件。本pom.xml是用来构建项目的配置文件。打开您最喜欢的文本编辑器并添加以下内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?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>com.example</groupId>

    <artifactId>myproject</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>2.0.0.RELEASE</version>

    </parent>

    <!-- Additional lines to be added here... -->

</project>

前面的列表应该给你一个工作版本。您可以通过运行来测试它mvn package(现在,您可以忽略“jar将为空 - 没有内容被标记为包含!”警告)。

此时,您可以将项目导入IDE(大多数现代Java IDE包含对Maven的内置支持)。为了简单起见,我们在本例中继续使用纯文本编辑器。

11.2添加类路径依赖关系

Spring Boot提供了许多“启动器(Starters)”,可让您将jar添加到类路径中。启动器(Starters)这spring-boot-starter-parent是一个提供有用的Maven默认值的特殊启动器。它还提供了一个 dependency-management 部分,以便您可以省略子模块依赖关系的版本标签。

其他“Starter”提供了在开发特定类型的应用程序时可能需要的依赖关系。由于我们正在开发一个Web应用程序,我们添加一个 spring-boot-starter-web依赖项。在此之前,我们可以通过运行以下命令来查看我们目前的功能:

$ mvn dependency:tree [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree命令打印您的项目依赖关系的树形表示。你可以看到它spring-boot-starter-parent本身不提供依赖关系。要添加必要的依赖关系,请编辑pom.xmlspring-boot-starter-web在该parent部分正下方添加 依赖项:

<dependency> <dependency> <groupId> org.springframework.boot </ groupId> <artifactId> spring-boot-starter-web </ artifactId> </ dependency>
</ dependencies>

如果你mvn dependency:tree再次运行,你会发现现在有很多附加的依赖关系,包括Tomcat Web服务器和Spring Boot本身。

11.3编写代码

为了完成我们的应用程序,我们需要创建一个Java文件。默认情况下,Maven编译源代码src/main/java,因此您需要创建该文件夹结构,然后添加一个名为src/main/java/Example.java包含以下代码的文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import org.springframework.boot.*;

import org.springframework.boot.autoconfigure.*;

import org.springframework.web.bind.annotation.*;

@RestController

@EnableAutoConfiguration

public class Example {

    @RequestMapping("/")

    String home() {

        return "Hello World!";

    }

    public static void main(String[] args) throws Exception {

        SpringApplication.run(Example.class, args);

    }

}

尽管这里没有太多的代码,但还是有很多重要的部分。如:

11.3.1 @RestController和@RequestMapping注解

我们Example类的第一个注释是@RestController。这被称为 stereotype annotation。它为阅读代码的人提供了线索,对于Spring来说,这个类扮演着特定的角色。在这种情况下,我们的类是一个Web @Controller,所以Spring在处理传入的Web请求时会考虑这个类。

@RequestMapping注释提供“路由”的信息。它告诉Spring,任何带有/路径的HTTP请求都应映射到该home方法。该 @RestController注释告诉Spring将结果字符串直接呈现给调用者。

@RestController@RequestMapping注解是Spring MVC的注解。(它们并不特定于Spring Boot。)有关更多详细信息,请参阅Spring参考手册中的MVC部分。

11.3.2 @EnableAutoConfiguration注解

第二个级别注释是@EnableAutoConfiguration。这个注解告诉Spring Boot根据你添加的jar依赖来“猜测”你想要如何配置Spring。自从spring-boot-starter-web添加了Tomcat和Spring MVC之后,自动配置假定您正在开发一个Web应用程序并据此设置Spring。

启动器和自动配置

自动配置旨在与“Starter”配合使用,但这两个概念并不直接相关。您可以自由选择启动器之外的jar依赖项。Spring Boot仍然尽力自动配置您的应用程序。

11.3.3“main”方法

我们应用程序的最后一部分是该main方法。这只是一个遵循Java约定的应用程序入口点的标准方法。我们的主要方法SpringApplication通过调用委托给Spring Boot的类run。 SpringApplication引导我们的应用程序,从Spring开始,然后启动自动配置的Tomcat Web服务器。我们需要Example.class将该run方法的参数作为参数传递,以确定SpringApplication哪些是主要的Spring组件。还传递了args数组以传递命令行参数。

11.4运行示例

在这一点上,你的应用程序应该工作。由于您使用了 spring-boot-starter-parentPOM,run因此您可以使用一个有用的目标来启动应用程序。mvn spring-boot:run从根项目目录中键入以启动应用程序。您应该看到类似于以下内容的输出:

e following:

$ mvn spring-boot:run.   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::  (v2.0.0.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

如果您打开一个Web浏览器localhost:8080,您应该看到以下输出:

Hello World!

要正常退出应用程序,请按ctrl-c

11.5 创建可执行的jar

让我们完成我们的例子,创建一个完全自包含的可执行jar文件,我们可以在生产环境中运行。 可执行的jar(有时称为“fat jars”)是包含编译的类以及代码运行所需要的所有jar包依赖的归档(archives)。

可执行jar和Java

Java不提供任何标准的方法来加载嵌套的jar文件(即本身包含在jar中的jar文件)。 如果您正在寻找可以发布自包含的应用程序,这可能是有问题的。
为了解决这个问题,许多开发人员使用“uber” jars。 一个uber jar简单地将所有类、jar包进行档案。 这种方法的问题是,很难看到您在应用程序中实际使用哪些库。 如果在多个jar中使用相同的文件名(但具有不同的内容),也可能会出现问题。
Spring Boot采用一个不同的方法这样可以直接对jar进行嵌套。

要创建可执行的jar,我们需要将spring-boot-maven-plugin添加到我们的pom.xml中。 在 dependencies标签 下方插入以下行:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

spring-boot-starter-parent POM 包括重新打包目标的 executions标签 配置。 如果您不使用该父POM,您将需要自己声明此配置。 有关详细信息,请参阅插件文档。

保存您的pom.xml并从命令行运行 mvn package:

$ mvn package[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.0.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如果你看看target目录,你应该看到myproject-0.0.1-SNAPSHOT.jar。 该文件的大小约为10 MB。 如果你想查看里面,可以使用jar tvf:

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

您还应该在target目录中看到一个名为myproject-0.0.1-SNAPSHOT.jar.original的较小文件。 这是Maven在Spring Boot重新打包之前创建的原始jar文件。

使用java -jar命令运行该应用程序:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar.   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::  (v2.0.0.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

像之前一样,ctrl+c正常退出应用程序。

12. 接下来应该读什么

希望本节能为您提供一些Spring Boot基础知识,并让您准备编写自己的应用程序。 如果你是一个面向具体任务的开发人员,你可能想跳过 https://spring.io/ ,看看一些解决具体的“如何用Spring”问题的入门指南; 我们还有Spring Boot-specific How-to参考文档。

Spring Boot库还有一大堆可以运行的示例。 示例与代码的其余部分是独立的(这样您不需要构建多余的代码来运行或使用示例)。

下一个是第三部分“使用 Spring Boot”。 如果你真的没有这个耐心,也可以跳过去阅读Spring Boot功能。

Spring Boot(5)---第一个Spring Boot应用程序相关推荐

  1. Spring Boot:构建一个RESTful Web应用程序

    介绍: REST代表表示状态传输 ,是API设计的体系结构指南. 我们假设您已经具有构建RESTful API的背景. 在本教程中,我们将设计一个简单的Spring Boot RESTful Web应 ...

  2. spring的下载及在idea搭建spring框架和第一个spring项目

    spring的下载 spring各版本jar包下载链接: commons logging jar下载链接: 你要是使用IDEA的话可以在这里加载spring框架 spring各版本jar包下载链接: ...

  3. Spring Boot (一)Spring Boot 概述

    Spring Boot(一) 一 . Spring Boot 是什么? 首先Spring Boot不是一个框架,它是一种用来轻松创建具有最小或零配置的独立应用程序的方式.这是方法用来开发基于Sprin ...

  4. 用 Docker 构建、运行、发布来一个 Spring Boot 应用

    原文同步至 http://waylau.com/docker-spring-boot/ 本文演示了如何用 Docker 构建.运行.发布来一个 Spring Boot 应用. Docker 简介 Do ...

  5. eclipse创建springboot项目_创建一个 Spring Boot 项目,你会几种方法?

    我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 42W+,如下图: 2017 年由于种种原因,就没有 ...

  6. 使用 Spring Boot CLI 运行第一个Spring boot程序

    简介 Spring Boot CLI是Spring Boot的命令行界面.它可以用来快速启动Spring.  它可以运行Groovy脚本.  Spring Boot CLI是创建基于Spring的应用 ...

  7. Spring Boot 面试,一个问题就干趴下了!

    最近栈长面试了不少人,其中不乏说对 Spring Boot 非常熟悉的,然后当我问到一些 Spring Boot 核心功能和原理的时候,没人能说得上来,或者说不到点上,可以说一个问题就问趴下了! 这是 ...

  8. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目02

    概述 将工程托管到Github Gradle构建 为什么一个main函数就能启动web并提供这么多功能 幕后的 Spring Boot 分发器和 multipart 配置 视图解析器.静态资源以及区域 ...

  9. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目01

    文章目录 概述 使用Spring Tool Suite构建Spring Boot项目 下载STS 插件安装 搭建第一个Spring Boot项目 启动项目 概述 通常,构建一个Spring Boot项 ...

最新文章

  1. SCAU 07校赛 10317 Fans of Footbal Teams
  2. python sub 不区分大小写_解决Python列表字符不区分大小写的问题
  3. js 为什么0.1+0.2不等于0.3
  4. 深信服上网管理设备基本操作
  5. 小容量单片机生成pdf文件
  6. 英语自动提取高频词_斑马英语提分营免费体验课
  7. php-fpm初始化失败,FPM的初始化 - [ PHP7的内核剖析 ] - 在线原生手册 - php中文网
  8. alert 返回页面 刷新_页面生命周期:DOMContentLoaded,load,beforeunload,unload
  9. 从头开始-02.C语言基础
  10. Matlab实用代码——定位文件位置,自动导入文件
  11. 采用dlopen、dlsym、dlclose加载动态链接库
  12. MapReduce计算模型(二)
  13. kettle将文件路径定义为_Kettle变量和自己定义java代码的实例应用
  14. GAN详解与PyTorch MINIST手写数字生成实战
  15. Linux常用快捷键及命令
  16. crackme.chm之Chafe1
  17. 怎样恢复计算机的开机桌面,电脑系统崩溃如何找回桌面文件?
  18. js函数arguments的使用
  19. 归一化方法总结 | 又名“BN和它的后浪们“
  20. JS IE11 Script5 拒绝访问 跨域

热门文章

  1. 数据结构与算法分析(八)——BFS算法
  2. Linux内核源码阅读之打开文件篇
  3. QT5开发及实例学习之九基本对话框(二)
  4. 使用Freemarker实现网页静态化
  5. 基于redis的乐观锁实践
  6. Linux编程之epoll
  7. 在CentOS7环境下部署TiDB
  8. 【文文殿下】Manache算法-学习笔记
  9. BZOJ 4736 温暖会指引我们前行 LCT+最优生成树+并查集
  10. [leetcode]Next Greater Element