当前位置: 首页 > 知识库问答 >
问题:

从标准Java应用程序运行Spring Boot jar

百里锋
2023-03-14

我有一个带有数据库、Swing UI等的大型应用程序。现在我想为这个应用程序添加一个REST API。Spring Boot允许轻松生成REST API,并提供有用的功能,如OpenApi文档和身份验证。

但是,当我从大型非Spring Boot应用程序中运行Spring Boot应用程序时,Spring Boot应用程序会被父应用程序的依赖关系弄糊涂并无法运行。

所以我的要求是这样的:从非Spring Boot应用程序运行Spring Boot应用程序,而不受父应用程序的依赖干扰。我目前正在运行Spring Boot应用程序,方法是将可执行jar添加为依赖项,然后调用org.springframework.boot.loader.JarLauncher.main(new String[0]);来运行Spring Boot应用程序。我不打算这样做,任何建议都将不胜感激。

共有2个答案

方楷
2023-03-14

您可以简单地排除自动配置依赖项。这里有一个信息链接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

王嘉木
2023-03-14

Spring是一个高度可配置的软件库的巨大集合,可用于设置(除其他外)REST APIendpoint和OpenAPI留档和UI。

Spring Boot是一个简化使用这些库的过程的项目,它应用了一个关于如何在独立过程中运行这些库的观点。

通过询问如何在更大的应用程序中运行Spring Boot应用程序,您试图从固执己见的设置中获益,同时违反了设置所基于的假设。我想从理论上讲,使用某种手动类加载器隔离是可能的,但是一旦您解决了依赖问题,您可能最终会遇到类版本冲突、配置位置问题等。简而言之,如果有可能的话,这样做的所有努力都会抵消好处。

解决这个问题有两种方法。

>

使用提供REST和OpenAPI功能的Spring库作为现有应用程序的一部分,而不使用Spring Boot。为了使用@RestController注释类,需要设置SpringMVC。如果您现有的应用程序是一个web应用程序,那还不错(https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html)。如果尚未在Web服务器中运行,则必须在嵌入式Web服务器中启动SpringMVC框架(https://devcenter.heroku.com/articles/create-a-java-web-application-using-embedded-tomcat)。这里有一篇关于将OpenAPI添加到MVC应用程序的好文章:https://www.baeldung.com/spring-rest-openapi-documentation.

 类似资料:
  • 例如。 这应该运行一个简单的hello world应用程序,摘自oracle文档。然而,当我‘运行’这个代码,没有窗口打开。取而代之的是打开一个名为“Java”的应用程序。看起来'java'只是一个位于'jdk1.8.0_25.jdk/contents/home/bin'中的'UNIX可执行文件‘。应用程序'java'绝对不显示任何东西,并且在没有强制退出的情况下无法关闭。 我在MacBook上运

  • 问题内容: 我尝试使用下面的代码来运行我从Apple脚本创建的独立实用程序应用程序,但是出现“无文件或目录不存在”错误。 我在项目,dist,父目录中放置了相同的副本(用于测试),但没有帮助。 因此,我的问题是:我对运行该应用程序的调用是否不好(也许是因为它不是Windows exe)?如何从Java运行Mac App? 谢谢 问题答案: Mac App Bunde不是可执行文件,而是具有特殊结构

  • 版本 openjdk版本“11.0.11”2021-04-20 如果可能的话,请不要告诉我像我以前看到其他人回答的那样“阅读基础知识”。我只是不确定为什么我的代码不能在我的最后一个项目中运行。 提前谢谢你!

  • 问题内容: 我正在写一个Java库,实际上是一个Clojure库,但是对于这个问题,重要的是它在JVM上运行。该库需要执行一些JavaScript。我尝试过Nashorn,但遇到了一些局限性,可能难以克服。另外,我想尝试NodeJS。 我希望我的库是独立的,不依赖于独立运行NodeJS的系统,因此需要一种特殊的部署机制将Java和NodeJS工件放置在正确的位置,以便由两个不同的网络服务器接收。但

  • 问题内容: 我通常使用java.lang.ProcessBuilder和java.lang.Process来运行外部命令行程序,并且对运行和完成命令运行良好。例如,这将在工作目录中运行带有参数“ myArg”的“ myProgram”: 但是,假设我想运行脚本或程序或具有交互式输入的内容(启动后提示我提供更多输入)。我可以使用与上面类似的代码在Java中执行此操作,还是需要其他方法?还是有一些图书

  • 本地angular应用程序在-http://localhost:4200/alerts;alerttype=renewals;cor=411119上成功运行 到目前为止,我已经将angular dist文件夹复制到遗留应用程序的webcontent文件夹中,并运行应用程序,如下所示 http://localhost:9086/customer/eWeb/alertapp/alerts;alertt