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
。