我有一个在Tomcat 8中部署的Spring Boot应用程序。当应用程序启动时,我想在Spring Autowires的某些依赖关系的后台启动一个工作线程。目前,我有这样的:Spring Boot - 在部署中启动后台线程的最佳方式
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class MyServer extends SpringBootServletInitializer {
public static void main(String[] args) {
log.info("Starting application");
ApplicationContext ctx = SpringApplication.run(MyServer.class, args);
Thread subscriber = new Thread(ctx.getBean(EventSubscriber.class));
log.info("Starting Subscriber Thread");
subscriber.start();
}
在我的泊坞测试环境中,这工作得很好 - 但是当我部署此给Tomcat 8我的Linux(Debian的杰西,爪哇8)主机我从来没有看到“正在启动用户线程”消息(并且线程未启动)。
你阅读http://docs.spring.io/spring-boot/docs/current/api的javadoc /org/springframework/boot/context/web/SpringBootServletInitializer.html - 我不明白你为什么要使用'main'方法。 –
因此,它也可以作为一个独立的服务器运行,没有Tomcat。 – Gandalf
什么是在'tomcat'环境中调用这个'main'? –