簡體   English   中英

從標准 Java 應用程序運行 Spring 啟動 jar

[英]Run Spring Boot jar from standard Java application

我有一個帶有數據庫的大型應用程序,Swing UI 等。現在我想為這個應用程序添加一個 REST API。 Spring Boot 允許輕松生成 REST API 以及 OpenApi 文檔和身份驗證等有用功能。

但是,當我從大型非 Spring 引導應用程序中運行 Spring 引導應用程序時,Spring 引導應用程序會被父應用程序的依賴項混淆並且無法運行。

所以我的要求是:從非 Spring 引導應用程序運行 Spring 引導應用程序,而不受父應用程序的依賴干擾。 我目前正在運行 Spring 引導應用程序,方法是添加可執行文件 jar 作為依賴項,然后調用org.springframework.boot.loader.JarLauncher.main(new String[0]); 運行 Spring 引導應用程序。 我不打算這樣做,任何建議都將不勝感激。

Spring 是大量高度可配置的軟件庫,可用於設置(除其他外)REST API 端點和 OpenAPI 文檔和 UI。

Spring Boot 是一個項目,通過應用有關如何在獨立進程中運行它們的固執觀點來簡化使用這些庫的過程。

通過詢問如何在更大的應用程序中運行 Spring 引導應用程序,您試圖在違反設置所基於的假設的同時獲得自以為是的設置的好處。 我想理論上它可能會使用某種手動類加載器隔離,但是一旦你解決了依賴問題,你可能最終會遇到 class 版本沖突、配置位置問題等。簡而言之,如果它可能在這樣做的所有努力都會抵消好處。

有兩種解決問題的方法。

  1. 使用 Spring Boot 將 API 構建為獨立進程。 將新進程配置為與現有應用程序相同的數據庫進行通信。 如果需要,將現有應用程序和 API(JPA 實體、DAO 類等)共同的任何代碼分解到共享庫中。 如果您使用此選項 go,您將不得不在生產環境中管理多種過程的開銷,這更復雜 - 但在解耦縮放、發布周期、重啟時間方面具有優勢。 請參閱關於微服務的辯論 ( https://martinfowler.com/articles/microservices.html )。

  2. 使用提供 REST 和 OpenAPI 功能的 Spring 庫作為現有應用程序的一部分,而不使用 Spring 引導。 您需要設置 SpringMVC 才能使用 @RestController 注釋類。 If your existing application is a web application that's not too bad ( https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html ). 如果它尚未在網絡服務器中運行,則必須在嵌入式網絡服務器中啟動 SpringMVC 框架( https://devcenter.heroku.com/articles/create-a-java-web-application-using-embedded-tomcat ) . 這里有一篇關於將 OpenAPI 添加到 MVC 應用程序的好文章: https://www.baeldung.com/spring-rest-openapi-documentation

您可以簡單地排除自動配置依賴項。 這是一個信息鏈接https://www.marcobehler.com/guides/spring-boot

以下是應用程序啟動時如何排除的代碼片段。

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class)
public class Application {

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

或其他方式

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

我想分享另一個 Spring 框架依賴https://www.marcobehler.com/guides/spring-framework

暫無
暫無

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

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