多个SpringBoot应用程序,只想运行一个

时间:2016-11-04 06:48:21

标签: java spring spring-boot

我目前正在使用SpringBootApplications,我有两个不同的@SpringBootApplication,一个用于Web应用程序,还有一个CommandLineRunner。

问题是,无论我执行哪一个,它都会尝试运行这两个应用程序。

package com.ws;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.Configuration;

@EnableAutoConfiguration
public class Init extends SpringBootServletInitializer { 

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(Init.class);
}

/**
 * Main method.
 *
 * @param args String[].
 * @throws Exception Exception.
 */
public static void main(String[] args) throws Exception {
    SpringApplication.run(Init.class, args);
}

这是我的另一个InitBatch.java:

package com.batch;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class InitBatch implements CommandLineRunner {

@Autowired
private Batch batch;

@Override
public void run(String... args) throws Exception {
    batch.processFiles();       
}

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

   }

如果我运行CommandLineRunner应用程序,在执行后继续加载Web应用程序 我需要能够分别从每一个中运行它们。但我不知道如何配置它。

谢谢!

1 个答案:

答案 0 :(得分:1)

春天文件说:

  1. SpringBootApplication:这是一个方便的注释,相当于声明@Configuration,@ EnableAutoConfiguration和@ComponentScan。

  2. 您应该只添加一个@EnableAutoConfiguration批注。我们通常建议您将其添加到主@Configuration类。

  3. 如此有效地你添加了2个EnableAutoConfiguration注释,这是春季启动所不允许的。我建议使用弹簧配置文件来实现您的需求。