理解独立的SpringBoot应用

32次阅读

共计 2719 个字符,预计需要花费 7 分钟才能阅读完成。

SpringBoot 特性

  1. 创建独立的 Spring 应用。
  2. 直接嵌入 Tomcat、Jetty、Undertow 等 Web 容器。
  3. 提供 starter 依赖,简化构建配置。
  4. 条件满足时,自动装配 Spring 或第三方类库。
  5. 提供运维特性,如指标、健康检查、外部化配置。
  6. 无代码生成,不需要 XML 配置。

命令行方式创建 SpringBoot

1. 使用 Maven Archetype 插件

mvn archetype:generate -DgroupId=thinking.in.spring.boot -DartifactId=first-spring-boot-application -Dversion=1.0.0-SNAPSHOT -DinteractiveMode=false

2. 增加 SpringBoot 依赖

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>thinking.in.spring.boot</groupId>
  <artifactId>first-spring-boot-application</artifactId>
  <packaging>jar</packaging>
  <version>1.0.0-SNAPSHOT</version>
  <name>《SpringBoot 编程思想》第一个 SpringBoot 项目 </name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <!-- 增加 Spring Boot Web 依赖 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

3. 调整引导类

@RestController
@SpringBootApplication
public class App 
{@RequestMapping("/")
    public String index() {return "welcome, My Buddy!"}
    
    public static void main(String[] args )
    {SpringApplication.run(App.class, args);
    }
}

4. 使用 Spring Boot Maven 插件引导 Spring Boot 应用, 需要在 pom.xml 中添加如下代码:

<!-- 添加 Spring Boot Parent POM -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
  </parent>

5. 在项目根目录执行如下指令
mvn spring-boot:run

6. 检验 HTTP 服务
浏览器地址栏输入 http://127.0.0.1:8080/

构建可执行 JAR

1. 需要在 pom 文件中添加如下插件:

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

按 ctrl+ C 键停止项目后,执行 mvn package,将会在项目 target 目录下生成 first-spring-boot-application-1.0.0-SNAPSHOT.jar。
2. 执行 Spring Boot 应用可执行 JAR
java -jar target/first-spring-boot-application-1.0.0-SNAPSHOT.jar
3.jar 包结构说明
BOOT-INF/classes:存放应用编译后的 class 文件;
BOOT-INF/lib:存放应用依赖的 jar 包;
META-INF/:存放应用相关元信息,如 MANIFEST.MF 文件;
org/:存放 Spring Boot 相关的 class 文件。
4.jar 命令运行成功的原因

Manifest-Version: 1.0
Implementation-Title:《SpringBoot 编程思想》第一个 SpringBoot 项目
Implementation-Version: 1.0.0-SNAPSHOT
Built-By: djn
Implementation-Vendor-Id: thinking.in.spring.boot
Spring-Boot-Version: 2.0.2.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: thinking.in.spring.boot.App
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.6.0
Build-Jdk: 1.8.0_181
Implementation-URL: http://maven.apache.org

java -jar 命令引导的启动类必须配置在 MANIFEST.MF 资源的 Main-Class 属性中,项目的引导类定义在 Start-Class 属性中。
通过 Java 命令在解压的根目录中引导该类文件,发现项目确实被启动:
java org.springframework.boot.loader.JarLauncher

正文完
 0