我们什么时候使用SpringApplicationBuilder?

Ole*_*Ole 9 java spring spring-boot

我正在阅读Spring微服务教程,其中包含以下内容:

new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args);
Run Code Online (Sandbox Code Playgroud)

大多数时候我看到这个启动一个Spring Boot应用程序:

SpringApplication.run(Application.class, args);
Run Code Online (Sandbox Code Playgroud)

这是我第一次看到SpringApplicationBuilder.我们什么时候应该使用它?

Sar*_*ana 5

在我们的应用程序中,我们已SpringApplicationBuilder在该starter应用程序中使用过。starter是一个简单的应用程序,它将以编程方式启动实际的应用程序实例。

starter基于将启动应用程序实例的参数,将要启动的进程数和Web /独立进程的类型作为参数传递给应用程序。我们曾经-w作为状态管理的Web应用程序开始使用。

boolean isWeb = // options parser, parse -w
new SpringApplicationBuilder(SpringBootAngularApp.class).web(isWeb).run(args);
Run Code Online (Sandbox Code Playgroud)

还有另一种方法可以做到这一点

SpringApplication sp = new SpringApplication(SpringApplicationBuilder.class);       
sp.setWebEnvironment(false);
sp.run(args);
Run Code Online (Sandbox Code Playgroud)

我们还可以使用来定制横幅记录器SpringApplicationBuilder

阅读文档以了解更多用法


Dan*_* C. 5

假设您必须解决一个问题,即需要使用多个数据库或结构,并且每个数据库或结构都需要彼此隔离,在这种情况下,我将使用一种SpringApplicationBuilder方法,因为可以通过创建父级来隔离每个域和子上下文,而无需混合使用不同的域问题,例如,您可以具有Application1和Application2配置,每个配置都具有自己的域,控制器和存储库,但您不想混合所有这些复杂性,而不必您可以使用创建两个不同的配置SpringApplicationBuilder

 SpringApplicationBuilder appBuilder = new SpringApplicationBuilder()
        .sources(Parent.class);

 appBuilder.child(Application1.class).run(args);
 appBuilder.child(Application2.class).run(args);
Run Code Online (Sandbox Code Playgroud)

一些额外的信息:邮政与SpringApplicationBuilder的例子SpringBuilder的Java文档以及如何使用SpringApplicationBuilder的其他例子


Sab*_*han 5

我遇到的一个常见用例是,当您希望在Weblogic等中部署传统部署战争文件时- 传统部署

使用时SpringApplication,大多数应用程序设置都有硬编码的默认值,例如要使用的配置文件和属性文件等。您需要查看此类的代码才能理解这一点。

使用SpringApplicationBuilder,即使其中大多数设置具有合理的默认值,您也可以在应用程序启动之前简单地更改其中一些应用程序默认设置。因此,只需几行代码,您就可以为不同的目的(嵌入式部署,外部部署,测试等)使用不同的设置来构建不同的应用程序,而实际的基础业务逻辑保持不变。