我正在使用Spring Boot开发Web应用程序。我的典型部署正在产生 war
把它放进去 webapps
Tomcat目录中的文件夹。
我注意到了 SpringBoot,我需要一个 main
方法。我想知道为什么这是必要的。如果有办法避免它,那会是什么?
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
构建战争并将其放置在Tomcat的webapps文件夹中的典型部署方案不需要主方法。所有你需要的是:
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
但是,如果您希望能够在开发期间从IDE中启动应用程序(例如使用Eclipse的Run As - > Java Application) 建立一个可执行的jar或战争 可以通过Spring Boot的嵌入式tomcat独立运行 java -jar myapp.war
命令,带有main方法的入口点类可能会有所帮助。
在单独的Web容器中运行
你不需要main方法,你需要做的就是扩展 SpringBootServletInitializer
如 Kryger 提及。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
....
....
作为独立应用程序在命令行中运行
在这里,您需要main方法,以便您可以使用它来运行它 java -jar
从命令行。
public class Application {
public static void main(String[] args){
ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
}
....
....
资源: https://spring.io/guides/gs/convert-jar-to-war/
在Spring Boot中,基本上需要三件事:
1)使用@SpringBootApplication注释
2)扩展SpringBootServletInitializer
3)覆盖如上所示的configure方法
就是这样!