构建一个简单的Spring Boot项目

11 构建一个简单的Spring Boot项目

这个章节描述如何通过Spring Boot构建一个“Hello Word”web应用,侧重介绍Spring Boot的一些重要功能。因为大多数的开发工具都支持Maven,所以我们使用它来构建这个应用。

网站 spring.io 包含了许多如何开始使用Spring Boot的指南。如果您需要解决具体的问题,可以先去这里看看。你可以跳过以下的步骤,通过 start.spring.io 网站来构建项目。这样做的话,你就可以直接编写代码啦。如果需要了解更多详情,点击 Spring Initializr documentation

在我们开始之前,先打开命令终端,运行以下命令,确认Java的版本和Maven的安装。

个人备注:Spring Boot在2.0以下,1.21以上包含1.21版本,jdk版本要求1.7;
2.0以上包含2.0 jdk版本要求1.8+

$ 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.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04: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是构建项目的结构。打开你喜欢的编辑器添加如下部分代码。

<?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>

    <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.1.8.RELEASE</version>
    </parent>

    <!-- Additional lines to be added here... -->
    <!-- 在此处添加其他行... -->
</project>

通过以上的操作,应该可以正常将项目构建好,然后你可以通过运行mvn package命令来打包项目,这时候你可以忽略“jar will be empty - no content was marked for inclusion!”警告。
做完以上的步骤,你就可以将项目导入到类似IDEA的开发工具中。因为这个项目比较简单,我们继续用简单的text编辑器来构建项目,这样来的更为方便。

11.2 添加项目依赖

Spring Boot提交了许多“启动器”让你选择添加到项目依赖中。我们的示例已经在POM的部分章节中使用了spring-boot-starter-parent。它是一种特殊的启动器,提供了默认的Maven配置。它还提供了dependency-management部分,让你可以不用指定依赖包版本引用依赖的jar包。
其他的“启动器”提供了一些特殊开发需要的依赖。比如当我们开发web应用的时候,我们添加spring-boot-starter-web依赖。在此之前,我们先看看我们现在有哪些依赖,运行一下命令。

$ mvn dependency:tree

[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree这个命令会以树形结构展示你项目的依赖。你可以看到spring-boot-starter-parent没有为自己提供任何依赖。为了让web应用可以正常运行,现在在你的pom.xml文件中添加“spring-boot-starter-web”依赖,具体如下所示:

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

如果现在你再运行一次mvn dependency:tree命令,你会看到多出很多其他的依赖包,比如Tomcat web Server和Spring Boot。

11.3 编写代码

为了让完成我们的web应用,我们编写一个简单的Java类。Maven默认编译src/main/java下的代码,所以你需要在这个路径下新建Example.java类,然后添加如下代码:

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) {
        SpringApplication.run(Example.class, args);
    }

}

尽管这里的代码量没有很多,但是做了的事情却不少,下面来具体介绍下这里面的重要部分。

11.3.1 注解 @RestController 和注解 @RequestMapping

在上面示例代码Example.java类中,@RestController是我们使用的第一个注解。这个注解被称之为构造型注解。对于我们来说,它暗示着这个类在Spring Boot中具有特殊的意义,即,这个类是web控制器,用来捕捉进来的请求。

@RequestMapping注解提供了路由信息,它告诉Spring任何HTTP以“/”路径的请求都将被映射到home方法中。@RestController还告诉了Spring将结果直接以字符串的方式返回到请求方。

@RequestMapping@RestController注解是Spring MVC的注解,跟Spring Boot没有具体的关系,如果想要了解更多,可以看MVC章节的相关文档

11.3.2 @EnableAutoConfiguration注解

第二个使用在类上面的注释是 @EnableAutoConfiguration,这个注解告诉Spring通过你在应用添加的依赖包来猜测你对Spring的配置(其实用猜测不是特别的准确,就是通过已经有的jar包,提供默认的配置)。因为spring-boot-starter-web已经添加了Tomcat和Spring MVC,自动化配置就会假设你在开发Spring Web项目,从而会依照Web开发为你做相应的配置。

启动器和自动化配置
自动化配置设计的宗旨是同启动器协同工作,但是它们之间没有直接的联系。也就说,你可以自由的选择启动器以外的jar包,Spring Boot依然会尽可能为你的应用做自动化配置。

11.3.3 main方法

应用最后的部分就是这个“main”方法,这只是一个遵循了Java标准的程序入口方法。通过调用run方法,我们的“main”方法委托给了Spring Boot的SpringApplication类,SpringApplication再引导我们的应用,启动Spring,启动自动配置的Tomcat。我们需要将Example.class作为参数传递给SpringApplication,以便它知道哪部分才是Spring的重要组件。args数组也可以通过命令行参数传递。

11.4 启动Example项目

到了这里,你的应用应该可以正常启动运行了。因为你已经添加了在POM里引用了spring-boot-starter-parent,你还有一个有效的程序运行入口。在文件的根目录运行终端,输入mvn spring-boot:run启动你的项目,你应该会看到类似于下面的输出:

$ mvn spring-boot:run

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.1.8.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

如果你打开了一个浏览器,输入地址: localhost:8080,你将会看到如下的输出:

Hello World!

想要关闭应用,只需要输入ctrl + C即可。

11.5创建一个可执行的Jar包

最后,我们通过创一个完全包含所需要的jar的应用来结束示例。可执行的jar(有时候被称之为“fat jars”,实在不知道怎么翻译这个词,胖夹?汗)将会包含已编译的class文件和运行时所需要的所有依赖jar。

Executable jars and Java
Java没有提供嵌套jar的标准方法,这可能会导致你在分发应用的时候出现问题。
为了解决这个问题,许多开发人员使用“uber”jars,一个uber jar可以将class和应用所有的依赖打包成单个完成物,一般就是一个jar。这种方式的问题在于,打包完成后,你就很难看到其中包含了哪些依赖包了。还有种情况就是如果两个包名是一样的,但内容却不一样,这也可能引发问题。
Spring Boot提供了另一种方式解决这个问题,具体查看different approach

为了完成一个完整的jar包,我们需要在应用pom文件中添加如下的代码:

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

spring-boot-starter-parent已经在POM中绑定了打包目标,如果你没有使用这个,你需要自己申明使用。
保存你的pom.xml文件,运行一下命令:

$ 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.1.8.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如果你打开target目录你将会看到myproject-0.0.1-SNAPSHOT.jar,这个jar包大概在10M左右的样子。如果你想看到里面的内容,可以运行jar tvf命令,具体如下:

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

运行完后,你将会在target目录中看到一个名为myproject-0.0.1-SNAPSHOT.jar.original的文件,这是Maven在打包Spring Boot项目原始的文件。
运行项目,使用java -jar命令,具体如下:

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

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.1.8.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

跟上面一样,关闭应用使用Ctrl + C命令

原文地址:https://www.cnblogs.com/deky97/p/11638633.html

时间: 2024-12-26 06:07:43

构建一个简单的Spring Boot项目的相关文章

Spring学习(二)——使用用Gradle构建一个简单的Spring MVC Web应用程序

1.新建一个Gradle工程(Project) 在新建工程窗口的左侧中选择 [Gradle],右侧保持默认选择,点击next,模块命名为VelocityDemo. 2.在该工程下新建一个 module,在弹出的窗口的左侧中选择 [Gradle],右侧勾选[Spring MVC],如下图所示: 并勾选[Application server],下方选择框中选择Tomcat7.0,如无该选项,则选中右边的 [ New... ] -- [ Tomcat Server ], 配置 Tomcat .配置好后

【spring cloud】导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做/或者 每次导入一个新的spring boot项目,IDEA不识别子module,启动类无法启动/右下角没有蓝色图标

如题:导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做 或者说每次导入一个新的spring boot项目,IDEA不识别,启动类无法启动,怎么解决 下面一起来走一遍这个流程: 1.将一个spring boot服务导入spring cloud中作为一个子模块 如图:这里有一个现成的spring cloud微服务集群,[如何创建一个spring cloud微服务:https://www.cnblogs.com/sxdcgaq8080/p/9035724.h

利用Maven快速创建一个简单的spring boot 实例

Spring Boot的好处:spring boot 大大减少了 使用spring的配置 和大量 xml 文件,并有效解决的项目之间的依赖问题,为想使用 spring项目 大大减轻的工作量 1.先创建一个Maven项目 2.配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

简单的Spring Boot 项目初级配置

一.前言 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 本系列以快速入门为主,可当作工具小手册阅读 二.环境搭建 创建一个 maven 工程,目录结构如下图: 2.1 添加依赖 创建 maven 工程,在 pom.xml 文件中添加如下依赖: <!-- 定义公共资源版本 --> <parent> <groupId&g

创建Spring Boot项目的几种方式总结

一.我们可以使用Spring Initializr来创建SpringBoot项目. Spring Initializr从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构.虽然不能生成应用程序代码,但它能为你提供一个基本的项目结构,以及一个用于构建代码的Maven或Gradle构建说明文件.你只需要写应用程序的代码就好了. Spring Initializr有几种用法. 通过Web界面使用. 通过Spring Tool Suite使用. 通过IntelliJ IDEA使

Eclipse中创建新的Spring Boot项目

简单几步,在Eclipse中创建一个新的Spring Boot项目: 1.Eclipse中安装STS插件: Help -> Eclipse Marketplace... Search或选择"Popular"标签,选择Spring Tool Suite (STS) for Eclipse插件,安装: 2.New -> Project... 找到Spring目录,选择Spring Starter Project,Next 3.填写跟项目相关的各种信息,然后Next: 4.选择需

使用docker构建第一个spring boot项目

在看了一些简单的docker命令之后 打算自己尝试整合一下docker+spring boot项目本文是自己使用docker+spring boot 发布一个项目1.docker介绍 docke是提供简单易用的容器接口Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就会生成一个虚拟容器.程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样.有了 Docker,就不用担心环境问题. 总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入

只需两步!Eclipse+Maven快速构建第一个Spring Boot项目

随着使用Spring进行开发的个人和企业越来越多,Spring从一个单一简洁的框架变成了一个大而全的开源软件,最直观的变化就是Spring需要引入的配置也越来越多.配置繁琐,容易出错,让人无比头疼,简化Spring配置简直可以说是民心所向. Spring Boot是由Pivotal团队提供的一个基于Java的全新的开源框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.如今,Spring Boot逐渐成为快

笔记:Spring Boot 项目构建与解析

构建 Maven 项目 通过官方的 Spring Initializr 工具来产生基础项目,访问 http://start.spring.io/ ,如下图所示,该页面提供了以Maven构建Spring Boot 项目的功能. 选择构建工具 Maven Project,Spring Boot 版本选择 1.5.4,填写 Group 和 Artifact 信息,在Search for dependencies 中可以搜索需要的其他依赖包,这里我们需要实现 RESTful API,所以可以添加 Web