我目前正在使用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应用程序 我需要能够分别从每一个中运行它们。但我不知道如何配置它。
谢谢!
答案 0 :(得分:1)
SpringBootApplication:这是一个方便的注释,相当于声明@Configuration,@ EnableAutoConfiguration和@ComponentScan。
您应该只添加一个@EnableAutoConfiguration批注。我们通常建议您将其添加到主@Configuration类。
如此有效地你添加了2个EnableAutoConfiguration注释,这是春季启动所不允许的。我建议使用弹簧配置文件来实现您的需求。