ZetCode

SpringApplicationBuilder

最后修改于 2023 年 8 月 2 日

在本文中,我们将展示如何使用 SpringApplicationBuilder 创建一个简单的 Spring Boot 应用程序。

Spring 是一个流行的 Java 应用程序框架,用于创建企业应用程序。Spring Boot 是 Spring 框架的演进,它有助于以最小的 effort 创建基于 Spring 的独立、生产级应用程序。

SpringApplication

SpringApplication 是一个从 Java main 方法引导 Spring 应用程序的类。 它创建一个合适的 ApplicationContext 实例(取决于类路径),注册一个 CommandLinePropertySource 以将命令行参数公开为 Spring 属性,刷新应用程序上下文,加载所有单例 bean,并触发任何 CommandLineRunner bean。

SpringApplicationBuilder

SpringApplicationBuilder 是一个用于 SpringApplicationApplicationContext 实例的构建器,具有方便的流畅 API 和上下文层次结构支持。

Spring Boot 示例

以下应用程序是一个简单的 Spring Boot 控制台应用程序,它使用 SpringApplicationBuilder 来设置一个 Spring Boot 应用程序。

该应用程序从用户那里获取一个参数;它期望一个网站的完整 URL 并返回其标题。

build.gradle
...
src
├── main
│   ├── java
│   │   └── com
│   │       └── zetcode
│   │           ├── Application.java
│   │           └── MyRunner.java
│   └── resources
└── test
    └── java

这是项目结构。

build.gradle
plugins {
    id 'org.springframework.boot' version '3.1.1'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'java'
}

group = 'com.zetcode'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.jsoup:jsoup:1.16.1'
}

Spring Boot starters 是一组方便的依赖描述符,它大大简化了配置。 spring-boot-starter 是核心 Spring starter。 jsoup 依赖项用于 JSoup 库。

com/zetcode/MyRunner.java
package com.zetcode;

import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
public class MyRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {

        if (!args.containsOption("website")) {

            System.err.println("no website specified");
        } else {

            List<String> vals = args.getOptionValues("website");
            String url = vals.get(0);

            Document doc = Jsoup.connect(url).get();
            String title = doc.title();
            System.out.printf("The title is: %s%n", title);
        }
    }
}

加载 Spring 应用程序后,将执行任何实现 ApplicationRunner 的 bean。

if (!args.containsOption("website")) {

我们检查命令行上是否指定了 --website 选项。

List<String> vals = args.getOptionValues("website");
String url = vals.get(0);

我们获取该选项的值。

Document doc = Jsoup.connect(url).get();
String title = doc.title();
System.out.printf("The title is: %s%n", title);

使用 JSoup,我们获取指定网站的标题。

com/zetcode/Application.java
package com.zetcode;

import org.springframework.boot.Banner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {

        new SpringApplicationBuilder(Application.class)
                .bannerMode(Banner.Mode.OFF)
                .logStartupInfo(false)
                .build()
                .run(args);
    }
}

Application 是设置 Spring Boot 应用程序的入口点。 @SpringBootApplication 注解启用自动配置和组件扫描。

new SpringApplicationBuilder(Application.class)
        .bannerMode(Banner.Mode.OFF)
        .logStartupInfo(false)
        .build()
        .run(args);

SpringApplicationBuilder 用于构建 Spring 应用程序。 我们关闭了横幅和启动信息。

$ ./gradlew bootRun -q --args=--website=http://webcode.me
The title is: My html page

命令行参数通过 --args 传递。 -q(静默)是 Gradle 选项,它关闭 Gradle 消息。

在本文中,我们已经介绍了 SpringApplicationBuilder

作者

我的名字是 Jan Bodnar,我是一位充满激情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 Spring Boot 教程