1 回答
TA贡献1906条经验 获得超10个赞
你试过尝试使用吗@Profile?
例如:
@Profile("CMD")
@SpringBootApplication
@EnableAutoConfiguration
public class JobApplication implements CommandLineRunner {
Logger logger = LoggerFactory.getLogger(JobApplication.class);
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(JobApplication.class, args);
context.close();
}
@Override
public void run(String... args) throws Exception {
// run the job
}
}
@Profile("WEB")
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
您可以启动命令行作为java -jar /job/job.jar -Dspring.profiles.active=CMD
和 web 配置文件 WEB。
因为@Profile是运行时 spring 注释,所以在加载 spring 上下文之前无法处理它,您将拥有(正如您发现的那样)
Unable to find a single main class from the following candidates [my.app.WebApplication, my.app.JobApplication]
出于这个原因,您可以启动一个特定的 spring boot 主类
-Dstart-class=com.sample.WebApplication
现在它不应该加载第二个因为现在@Profile应该工作
添加回答
举报