zoukankan      html  css  js  c++  java
  • Spring Boot入门(一):搭建Spring Boot项目

    从本篇博客开始,我们开始进入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/,会看到如下界面:

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

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

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

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

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

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

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

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

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

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

    1.2 方式2:使用IDEA搭建

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

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

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

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

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

    Maven依赖树如下所示:

    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个依赖使用的版本,如下所示:

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

    在该文件中,我们可以找到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:

    第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);
        }
    }
    

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

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

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

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

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

    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
    

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

    5. 源码及参考

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

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

    使用idea创建第一个springboot项目

    Spring Boot-关闭Banner

    关闭spring boot的banner

    SpringBoot yml 配置

  • 相关阅读:
    js阶段循环(for,while,do-while,for-in),判断(if,switch),练习题
    翻牌器
    用 VSCode 调试网页的 JS 代码
    图形化设置数据库规则
    js中ES6数据结构Map 、Set 、WeakMap 、 WeakSet
    css的filter方法,给图片添加滤镜
    使用<a-select>时,placeholder不起作用,提示语不显示
    Vue数据更新但页面没有更新的多种情况
    react事件处理-函数绑定
    在css中使用js定义的变量
  • 原文地址:https://www.cnblogs.com/zwwhnly/p/11736287.html
Copyright © 2011-2022 走看看