一尘不染

如何在没有嵌入式tomcat的情况下启动Spring Boot应用程序?

spring-boot

我有一个使用jhipster生成的Spring
Boot应用程序,它工作正常。但是,我还需要为某些后台批处理作业创建第二个应用程序,并且该应用程序使用第一个应用程序的大部分spring服务。我所做的是创建第二个主类,它启动了一个Spring
Boot应用程序。问题在于这还会启动嵌入式Web服务器以及仅对Web应用有用的所有服务。我只需要与GUI无关的服务,持久性和其他类。

这是我的两个主要班级(简化版)

正常的Spring Boot应用程序:

@ComponentScan
@AutoConfigure
class Application {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class)
        app.run(args)
    }
}

后台应用程序:

@ComponentScan
@AutoConfigure
class BackOfficeApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(BackOfficeApplication.class)
        app.run(args)
    }
}

什么有效:我的后台应用程序可以访问我需要的所有内容。Spring服务,Bean等。问题:后台应用程序启动GUI,阻止我同时启动两次。

有没有办法停用嵌入式tomcat服务器的启动?否则,有没有办法以不会启动嵌入式服务器的另一种方式加载spring应用程序上下文?

一些细节:*我不使用mvn spring-boot:run启动应用程序。我直接使用Java(或使用eclipse)启动课程


阅读 342

收藏
2020-05-30

共1个答案

一尘不染

SpringApplication有财产webEnvironment。如果Tomcat在类路径上,则默认为true,但您可以将其设置为false(以编程方式或使用spring.main.webEnvironment)。

2020-05-30