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 是一个用于 SpringApplication 和 ApplicationContext 实例的构建器,具有方便的流畅 API 和上下文层次结构支持。
Spring Boot 示例
以下应用程序是一个简单的 Spring Boot 控制台应用程序,它使用 SpringApplicationBuilder 来设置一个 Spring Boot 应用程序。
该应用程序从用户那里获取一个参数;它期望一个网站的完整 URL 并返回其标题。
build.gradle
...
src
├── main
│ ├── java
│ │ └── com
│ │ └── zetcode
│ │ ├── Application.java
│ │ └── MyRunner.java
│ └── resources
└── test
└── java
这是项目结构。
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 库。
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,我们获取指定网站的标题。
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。