27

Spring Boot入门(一):搭建Spring Boot项目

 4 years ago
source link: https://www.tuicool.com/articles/6nEFzq3
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

从本篇博客开始,我们开始进入Spring Boot的世界,它的出现使Spring的开发变得更加简洁,因此一经推出受到众多程序员的喜爱。

作为Spring Boot系列的第一篇博客,我们先来讲解下如何搭建Spring Boot项目。

如果你直接就使用的是Spring Boot,建议你有时间可以学习下Spring,这样更能体会到Spring Boot带来的便利。

Spring系列博客地址: https://www.cnblogs.com/zwwhnly/category/1407891.html

1. 搭建Spring Boot项目的2种方式

1.1 方式1:使用官网搭建

首先,在浏览器中,输入 https://start.spring.io/ ,会看到如下界面:

B7VR32n.png!web

从上图可以看出,Project默认值是Maven Project,Language默认值是Java,Spring Boot默认版本是2.1.9,因为符合我们的需求,所以这3项我们不做修改。

然后填写项目信息,即Project Metadata项,如下所示:

6nIN3i3.png!web

上图中的Group,可理解为组织,一般为域名反过来,如果域名是zwwhnly.com,这里就填com.zwwhnly。

Artifact,可理解为项目名,比如我这里填写的是springboot-action。

接着选择依赖项,比如要添加Web依赖项,这里可以按关键字搜索Web依赖项,如下所示:

quAVZrU.png!web

也可以按分类找到Web依赖项,如下所示:

q2mEJza.png!web

不管以哪种方式添加,最终的结果都是下面这样的:

eeuyUzf.png!web

最后,点击”Generate“按钮生成项目代码:

r2IbAn6.png!web

解压后的代码目录如下图所示:

YJvANz6.png!web

从图中可以看出,此处生成的其实就是一个简单的基于Maven的项目,你可以使用自己喜欢的开发工具打开该项目,比如IntelliJ IDEA。

1.2 方式2:使用IDEA搭建

首先,打开开发工具IntelliJ IDEA,依次点击菜单File--New--Project打开新建项目对话框,先选中左侧的“Spring Initializr”,然后选择项目要使用的JDK版本,如1.8,点击"Next"按钮:

fyeQnii.png!web

按照下图中的提示填写好项目信息、打包方式、Java版本等信息,点击“Next"按钮:

e6jY7bn.png!web

选择项目要使用的依赖项(如Spring Web)以及Spring Boot的版本(如2.1.9),点击”Next“按钮:

baYfymr.png!web

确认好项目名称和项目要保存的路径,点击“Finish"按钮,如果保存的路径不存在,会提示是否自动创建该目录,点击“OK”即可:

aui6JbA.png!web

bE7jeyI.png!web

创建好的项目结构图如下所示:

naAbqaR.png!web

Maven依赖树如下所示:

QVBVvq7.png!web

2. 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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zwwhnly</groupId>
    <artifactId>springboot-action</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-action</name>
    <description>Spring Boot Action Code</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>

关于pom.xml的整个讲解,可以参考我之前写的博客: Spring入门(四):使用Maven管理Spring项目 ,这里我们只讲解下该文件和之前不同的地方。

第1个值得注意的地方是文件中的parent标签:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

该标签用于添加Spring Boot的父级依赖,其中spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。

举个具体的例子,我们往pom.xml中添加如下依赖:

<dependency>
   <groupId>com.rabbitmq</groupId>
   <artifactId>amqp-client</artifactId>
</dependency>

和默认的2个依赖一样,我们并未指定该依赖的version版本,但是在Maven的依赖树里,却能看到这3个依赖使用的版本,如下所示:

qiEbmqr.png!web

这就是parent标签中引用spring-boot-starter-parent的作用,我们可以通过以下文件来查看它都提供了哪些依赖的默认版本信息:

nmQVbqR.png!web

在该文件中,我们可以找到spring-boot-starter-web、spring-boot-starter-test、amqp-client指定的版本信息:

<properties>
    <rabbit-amqp-client.version>5.4.3</rabbit-amqp-client.version>
</properties>

<dependencies>
    <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>${rabbit-amqp-client.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.1.9.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>2.1.9.RELEASE</version>
    </dependency>
</dependencies>

可以发现,指定的版本正是Maven依赖树上看到的版本信息。

不过可以通过指定version版本来覆盖默认的版本,比如我们将amqp-client的依赖信息修改为:

<dependency>
   <groupId>com.rabbitmq</groupId>
   <artifactId>amqp-client</artifactId>
   <version>5.7.0</version>
</dependency>

此时在Maven依赖树看到的amqp-client的版本就变为了5.7.0:

nURRNfN.png!web

第2个值得注意的地方是,文件中添加了Spring Boot的编译插件:

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

这里我们也没有指定version,所以使用的是默认的版本2.1.9.RELEASE(和上面使用amqp-client的原理一样):

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.1.9.RELEASE</version>
</plugin>

3. 简单演示

找到启动类SpringbootActionApplication(名称一般为ArtifactId+Application),看到默认代码如下:

package com.zwwhnly.springbootaction;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootActionApplication {

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

为方便演示,我们暂时在启动类中新增一个Api接口:

package com.zwwhnly.springbootaction;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringbootActionApplication {

    @RequestMapping("/")
    public String index() {
        return "Hello Spring Boot";
    }

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

在启动类中右键,然后选择运行项目,看到如下信息:

aqAvA3q.png!web

在浏览器中访问http://localhost:8080/,会看到如下信息:

2EfAruR.png!web

@RestController注解和@RequestMapping注解其实是Spring MVC相关的注解,并不是Spring Boot特有的,关于Spring MVC的相关技术,可以查看以下博客:

  1. Spring入门(十二):Spring MVC使用讲解
  2. Spring入门(十三):Spring MVC常用注解讲解
  3. Spring入门(十四):Spring MVC控制器的2种测试方法

4. 关闭Banner

其实刚刚启动项目时我们已经看到了Spring Boot的Banner,那么你不禁要问什么是Spring Boot的Banner呢?

其实就是下图中红色标记的地方:

UJvYrqq.png!web

也许有人会觉得每次启动都显示这些信息并没有实际意义,那么我们如何关闭它呢?

4.1 通过代码关闭

原代码:

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

修改后:

public static void main(String[] args) {
    //SpringApplication.run(SpringbootActionApplication.class, args);

    SpringApplication springApplication = new SpringApplication(SpringbootActionApplication.class);
    springApplication.setBannerMode(Banner.Mode.OFF);
    springApplication.run(args);
}

4.2 通过配置文件关闭

默认情况下,新建的Spring Boot项目都有个空的application.properties配置文件,可以添加如下配置:

spring.main.banner-mode=off

重新启动项目,效果如下图所示:

j2IJNzQ.png!web

5. 源码及参考

源码地址: https://github.com/zwwhnly/springboot-action.git ,欢迎下载。

汪云飞《Java EE开发的颠覆者:Spring Boot实战》

使用idea创建第一个springboot项目

Spring Boot-关闭Banner

关闭spring boot的banner

SpringBoot yml 配置

6. 最后

欢迎扫码关注微信公众号:「申城异乡人」,定期分享Java技术干货,让我们一起进步。

JRvAr2y.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK