0

快速体验Spring Boot了解使用、运行和打包 | SpringBoot 2.7.2学习系列 - 程序员优雅...

 2 years ago
source link: https://www.cnblogs.com/youyacoder/p/16544627.html
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.
neoserver,ios ssh client

SpringBoot 2.7.2 学习系列,本节内容快速体验Spring Boot,带大家了解它的基本使用、运行和打包。

Spring Boot 基于 Spring 框架,底层离不开 IoC、AoP 等核心思想。Spring 4.0 提供了基于 Java Config 的开发方式,Spring Boot 应运而生,可以简化 Spring 应用开发过程,同时也可以快速方便的集成第三方框架,如 MyBatis、Redis 等。

0 版本说明

  1. 开发工具 IDEA 版本:2021.2
  2. Maven 版本: 3.6.3
  3. Spring Boot 版本:2.7.2
  4. JDK 版本:JDK 8
  5. MySQL 版本:MySQL 8

说明,当前 Spring Boot 2.x 最新稳定版为 2.7.2 ,JDK 8 需要以上版本、Maven 需要 3.5 以上版本。(本想基于 Spring Boot 3.x,但 3.x 需要 Java 17,优雅哥电脑还只是 JDK 8)

1 创建 Spring Boot 应用

1.1 创建工程

1)打开 idea,新建一个 Maven 项目,点击“Next”

image-20220725222306684

2)输入 Name、GroupId、ArtifactId,点击“Finish”

image-20220725222537900

1.2 设置 IDEA

在 IDEA 的 Preferences 中设置 JDK、Maven

1)设置 Maven

image-20220725223111620

2)设置 JDK

image-20220725223300552

在 Module Settings 中设置 JDK

image-20220725223448668

首先设置 SDKs:

image-20220725223543208

接着在 “Project” 中选择设置的 SDK

image-20220725223646265

最后在 “Modules” 中选择 Language Level:

image-20220725223758470

2 添加 Spring Boot 支持

2.1 添加依赖

1)在 pom.xml 中添加 Spring Boot 依赖。

在烂大街的文章博客中,都是通过 parent 的方式继承 spring-boot-starter-parent,如下:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.2</version>
    </parent>

这种方式几乎都用于在 demo 编写中,在大型项目或中大型企业中很少见到这么使用的。因为每个 module 只能有一个 parent ,而在企业开发中,微服务有多个服务,多个服务一般会继承自一个统一的 module,便于版本控制、通用功能等。如果在每个服务中都让spring-boot-starter-parent 占据了 parent 节点,那如何继承统一的 parent module 呢?

或许有人会说,在 parent module 中继承 spring-boot-starter-parent。没错,确实可以这样。但除了服务,还会有一些公共模块(如对参数校验、通用响应、分布式 Redis 锁、Spring Doc等通用模块)也继承自这个parent module,这样一来,这些公共module也被迫添加了压根没有使用 spring boot starter 依赖。

我的做法是通过 spring-boot-dependencies 来实现:

  1. properties 中定义 spring-boot-dependencies 版本号
  2. 在依赖管理 dependencyManagement 中,通过 pom 的方式、scope 为 import 添加 spring-boot-dependencies
  3. 在依赖dependencies中添加需要使用到的依赖。

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yygnb.demo</groupId>
    <artifactId>hero-springboot-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <!-- Spring Boot 版本 -->
        <spring-boot-dependencies.version>2.7.2</spring-boot-dependencies.version>
    </properties>

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

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

2.2 创建启动类

创建启动类:com.yygnb.demo.DemoApplication

@SpringBootApplication
public class DemoApplication {

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

3 测试运行

3.1 添加测试Controller

创建测试使用的 Controller:com.yygnb.demo.controller.DemoController

@RestController
@RequestMapping("demo")
public class DemoController {

    @GetMapping("hello")
    public String hello(String msg) {
        String result = "Hello Spring Boot ! " + msg;
        System.out.println(result);
        return result;
    }
}

3.2 启动运行

运行DemoApplication 中的 main 方法即可启动应用。控制台显示如下,则应用启动成功:

image-20220726003230302

在浏览器中访问:

http://localhost:8080/demo/hello?msg=FirstTest

页面上和控制台中都会显示:

Hello Spring Boot ! FirstTest

3.3 修改端口

Spring Boot 默认运行的端口为 8080,如果要修改运行的端口号,需要修改配置实现。Spring Boot 支持三种格式的配置文件:xmlymlyaml,在项目中使用 yml格式较多。

使用 yml 格式需要注意:

1. 使用冒号分隔属性名和属性值
2. 字符大小写敏感
3. 层级之间缩进敏感(间隔两个空格)
4. 属性值前面需要加一个空格

Spring Boot 核心配置文件名为 application

src/main/resources 中创建配置文件application.yml

server:
  port: 9099

该配置指定了服务运行的端口号为 9099,重启服务,将上面的访问路径中的8080修改为 9099 再次访问。

Maven 工程打包是通过 mvn 命令进行的。在控制台中项目根目录下执行下列命令:

mvn clean package

执行该命令后,会在 target 目录下生成 hero-springboot-demo-1.0-SNAPSHOT.jar。查看该文件的大小,只有 4kb,这是因为直接打包仅仅会打包当前的代码,相关使用到的 spring boot 的依赖并不会包含进去,此时的 jar 文件是不能直接运行的。如果要让打包后的 jar 可以直接运行,需要在 pom.xml 中配置相关插件配置:

4.1 配置插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot-dependencies.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

重新执行 mvn clean pacakge,会在 target 中生成两个文件:

  • hero-springboot-demo-1.0-SNAPSHOT.jar.original
  • hero-springboot-demo-1.0-SNAPSHOT.jar

前者是打包的原始文件,和配置插件前一样,仅包含当前项目的代码。后者就包含了 spring boot 有关依赖,内置 Tomcat,可以直接运行。

4.2 运行 jar

可通过 java 命令执行上面打包生成的可执行文件。在控制台中执行:

java -jar target/hero-springboot-demo-1.0-SNAPSHOT.jar

命令执行后,依旧会启动服务。

本文记录了另一种依赖 spring boot 的方式,下一篇集成MyBatis Plus实现增删改查。

image

今日优雅哥(youyacoder)学习结束,期待关注留言分享~~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK