Java 我们什么时候使用SpringApplicationBuilder?
我正在学习Spring Microservices教程,其中包含以下内容:Java 我们什么时候使用SpringApplicationBuilder?,java,spring,spring-boot,Java,Spring,Spring Boot,我正在学习Spring Microservices教程,其中包含以下内容: new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args); 在大多数情况下,我看到这一点是为了启动Spring启动应用程序: SpringApplication.run(Application.class, args); 这是我第一次看到SpringApplicationBuilder。我们一般什么时候应该使用它?在我们的应用程序中
new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args);
在大多数情况下,我看到这一点是为了启动Spring启动应用程序:
SpringApplication.run(Application.class, args);
这是我第一次看到SpringApplicationBuilder。我们一般什么时候应该使用它?在我们的应用程序中,我们在
starter
应用程序中使用了SpringApplicationBuilder
starter
是一个简单的应用程序,它将以编程方式启动实际的应用程序实例
要启动的进程数和进程类型web/standalone将作为参数传递给starter
应用程序,并基于这些参数启动应用程序实例。我们使用-w
作为状态管理的web应用程序启动
boolean isWeb = // options parser, parse -w
new SpringApplicationBuilder(SpringBootAngularApp.class).web(isWeb).run(args);
还有另一种方法可以做到这一点
SpringApplication sp = new SpringApplication(SpringApplicationBuilder.class);
sp.setWebEnvironment(false);
sp.run(args);
我们还可以使用SpringApplicationBuilder
定制横幅、记录器
阅读文档了解更多用法假设您必须解决一个问题,即您需要使用多个数据库或结构,并且每个数据库或结构都需要彼此隔离,在这种情况下,我将使用
SpringApplicationBuilder
方法,因为每个域都可以通过创建父上下文和子上下文来隔离,并且不需要混合不同的域问题,例如,您可以有Application1和Application2配置,每个域都有自己的域、控制器、,和存储库,但您不想混合所有这些复杂性,相反,您可以使用SpringApplicationBuilder
SpringApplicationBuilder appBuilder = new SpringApplicationBuilder()
.sources(Parent.class);
appBuilder.child(Application1.class).run(args);
appBuilder.child(Application2.class).run(args);
一些附加信息:,我遇到的一个常见用例是,当您希望在Weblogic等中部署传统部署war文件时- 使用
SpringApplication
,大多数应用程序设置都有硬编码的默认值,如要使用的配置文件和属性文件等。您需要查看此类代码才能理解这一点
使用
SpringApplicationBuilder
,您可以在应用程序启动之前简单地更改其中一些应用程序默认设置,即使其中大多数设置都有合理的默认值。因此,只需几行代码,就可以为不同的目的(嵌入式部署、外部部署、测试等)使用不同的设置构建不同的应用程序,而实际的底层业务逻辑保持不变 你在课堂上读过Javadocs吗?我读过。看起来好像它们是类似的类,但SpringApplicationBuilder提供了更多的控制,如配置文件等。在这种情况下,虽然ZuulaApplication看起来似乎只使用SpringApplication就可以了,但作者选择使用SpringApplicationBuilder…?在这种情况下,看起来使用是不必要的。web
参数通常根据是否存在适当的依赖项自动确定;显式地将其设置为true
将导致启动失败或冗余。事实上,我认为这很奇怪。。。