簡體   English   中英

沒有 webapp 的 SpringApplicationBuilder parent webapp 和 child 不起作用

[英]SpringApplicationBuilder parent webapp and child without webapp doesn't work

我有一個 spring 啟動應用程序,它有一個父應用程序上下文和一個帶有一些遺留代碼的子應用程序上下文。 我想在父應用程序上下文中有一個 webapp,並且子上下文是一個非 webapp。

我在 application.yml 中有我的配置和屬性,它在主 class 中加載

@ComponentScan(...)
@PropertySource(value = "classpath:application.yml", factory = YamlPropertySourceFactory.class)
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApplication(
    public static void main(String[] args) {
        new SpringApplicationBuilder(MyApplication.class)
                    .profiles("Prod")
                    .web(WebApplicationType.SERVLET)
                    .listeners(new MainAppListener())  // logging for some of the events
                    .child(LegacyServiceConfig.class)
                    .web(WebApplicationType.NONE)
                    .listeners(new LegacyAppListener())  // logging for some of the events
                    .run(args);
    }
}

到目前為止我已經嘗試過:

  1. 我的 application.yml ( spring.main.web-application-type ) 中沒有任何 web 應用程序類型配置。 我希望我在上面的代碼片段中通過代碼指定的配置會起作用,但事實並非如此。 兩個應用程序上下文都不是作為 webapp 啟動的,有效地忽略了上面代碼段中的配置web(WebApplicationType.SERVLET)
  2. 我嘗試將spring.main.web-application-type=servlet放入我的 application.yaml。 但這似乎將此配置應用於父應用程序上下文和子應用程序上下文。 而且它們都試圖以 webapps 的形式啟動,這不是我想要的。

我如何讓它工作? 任何指針?

據我所知,spring-boot 僅從 main 開始,主要的 class 由 Maven 提供,因為我曾參與 Maven 項目。 項目中的所有屬性,如 JDBC 連接,端口更改,您可以在 .properties(extension) 類型文件中進行。 而且這個文件也可以是.yml 格式。 這些文件與 main class 完全不同。

如果您在 main 中進行任何更改或在 main 中添加任何額外的注釋,則會引發錯誤。

因此,將每個屬性保存在 .properties 或 .yml 文件中,並將所有配置組件掃描保存在 pom.xml 文件中,您還可以擁有兩個 .properties 文件

但是 main class 應該像這樣簡單:

@SpringBootApplication()
public class SpringBootProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootProjectApplication.class, args);
    }

}

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM