我们什么时候使用SpringApplicationBuilder?

2022-09-02 12:50:08

我正在学习一个Spring微服务教程,它包含以下行:

new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args);

大多数时候,我看到这是为了启动Spring Boot应用程序:

SpringApplication.run(Application.class, args);

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


答案 1

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

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

 appBuilder.child(Application1.class).run(args);
 appBuilder.child(Application2.class).run(args);

一些附加信息:发布SpringApplicationBuilder的示例SpringBuilder的Java Doc以及如何使用SpringApplicationBuilder的其他示例


答案 2

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

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

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


推荐