你可以嵌套Spring Boot应用程序执行吗? (对 run(...) 的嵌套调用?)

问题描述 投票:0回答:1

你好 Stackoverflow :),

为了提供一些背景信息,我主要是独自开发一个应用程序,该应用程序使用 Cucumber 和 TestNG 运行测试。整个应用程序通过 spring boot 运行,我特别小心地允许到处并行。我现在想使用一个非常简单且易于维护的前端来扩展应用程序,该前端允许通过 GUI 执行测试运行。

带有 GUI 的 Spring 应用程序是一个单独的 @SpringBootConfiguration,它将生成另一个单独的 @SpringBootConfiguration 用于通过 GUI 启动的执行。所以我有 3 个配置:

  1. 用于 CI/CD 目的的配置
  2. 使用额外的控制器进行 GUI 用途的配置
  3. 从 GUI 配置启动配置

3. 配置的执行发生在 POST 控制器方法内,看起来像这样:

CompleteableFuture.runAsync(() -> new SpringApplicationBuilder().OMITTED.run(..., ..., ...));

3. 配置当前在从 JAR 内部执行时不起作用,仅当通过 IntelliJ 执行时才起作用。当 @EnableAutoConfiguration 被激活时,它会提示找不到 spring.factories 文件。没有它根本找不到合适的来源。

这种方法可能/可行吗?或者对于我的用例是否有更好的方法?请注意,我想尽可能降低复杂性,并且实际上只需要一个简单的前端。如果我的 @ConfigurationProperties 保持不可变,我也更喜欢它。

java spring spring-boot
1个回答
0
投票

您面临的问题可能与 Spring Boot 如何处理

classpath
以及从 JAR 文件运行与从 IntelliJ/vscode 等 IDE 运行时的资源加载有关

手动指定配置的方法:-

CompletableFuture.runAsync(() -> new SpringApplicationBuilder()
    .sources(MyConfigurationClass.class)
    .properties("spring.config.name=myapp")
    .run(args));

如果问题仍然存在,您可能需要查看与 spring.factories 相关的确切错误消息以及资源在 JAR 中捆绑的方式(您可以使用 jar tf .jar 等工具检查 JAR 结构)。

如果不起作用尝试添加日志记录或调试语句以验证 spring.factories 文件和其他资源是否正确加载:)

© www.soinside.com 2019 - 2024. All rights reserved.