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

Spring:在应用程序主方法中运行多个“SpringApplication.Run()”

顾靖
2023-03-14

嘿,我是新来的Spring,并试图在我的Applications.java.中运行多个运行方法

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan
@EnableAutoConfiguration
public class Application {

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

当我试图运行这个我得到一个异常

有没有办法在main中同时调用这两个run方法?

-StackTrace

org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:135)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:476)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:120)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:683)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:313)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:944)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:933)
    at testWebApp.Application.main(Application.java:13)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)

共有3个答案

麹耘豪
2023-03-14

如果看不到代码,就不可能说,但我猜你正在尝试使用相同的端口启动两个webapp。您可以更改其中一个的端口(如果需要),或者将其设置为非网络应用。我建议使用SpringApplicationBuilder来设置这些东西。

陶炫明
2023-03-14

run方法支持对象数组

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {
        Object[] sources = {Application.class, ScheduledTasks.class};
        SpringApplication.run(sources, args);
    }
}
颜文昌
2023-03-14

我认为您尝试运行一个具有两种配置的Spring应用程序

执行此操作的正常方法是使用@导入注释。

@ComponentScan
@EnableAutoConfiguration
@Import(ScheduledTasks.class)
public class Application {

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

@参见Spring参考第4.12.5章使用@导入注释编写基于Java的配置

 类似资料:
  • 我正在尝试在Tomcat上部署多个spring boot web应用程序。所有应用程序都有相同的application.properties。如何拆分在Tomcat上运行的不同应用程序的配置文件。

  • 问题内容: 我正在运行Eclipse 3.5,并且经常遇到一个问题,为了测试程序,我必须单击6-7次,而不是单击“播放”按钮。 问题是我正在编写网络应用程序,因此我具有“服务器”的运行配置和“客户端”的运行配置。然后要测试我的程序,我必须先启动服务器,再启动一个客户端,然后再启动另一个客户端,等等。是否有将其自动化为一个运行配置的方法? 问题答案: 您可以直接调用任何类的main方法。例如,如果您

  • 我怎么能做到..以编程方式有什么方法可以做到这一点。 Pls救命!

  • 我有一个多Maven模块Spring Boot项目,具有以下结构: webservices和backend都是单独的Spring Boot应用程序(它们生成一个jar文件,我用它来启动它们),它们依赖于commons模块。因此,我将commons作为一个依赖项包含在webservices和后端的pom中。xml。 我对启动我的应用程序没有什么疑问。 如何在单个JVM中启动后端和webservice

  • solver_1 2019-01-04 22:55:15.698警告1---[main]O.H.Engine.jdbc.spi.sqlexceptionHelper:SQL错误:0,sqlstate:08s01 solver_1 2019-01-04 22:55:15.698错误1---[main]O.H.Engine.jdbc.spi.sqlexceptionHelper:通信链接失败solve

  • 问题内容: 这个问题是我继续研究Docker的一部分,并且在某些方面跟进了我先前的问题之一。我现在已经了解了如何通过将一堆Docker容器链接在一起来获得完整的应用程序堆栈(实际上是微型VPS)。例如,可以创建一个堆栈,为Apache+ PHP5提供一堆扩展名+ Redis + MemCached+MySQL,它们都在Ubuntu上运行,无论是否带有附加数据容器,都可以轻松地序列化用户数据。 一切