如果我使用 Spring Boot 将 Web 应用开发为 war,为什么还需要 main 方法?
Why do I need main method if I develop web app as war using Spring Boot?
我正在使用 Spring Boot 开发 Web 应用程序。我的典型部署是生成 war
并将其放置在 Tomcat 目录中的 webapps
文件夹中。
我注意到 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);
}
}
在单独的网络容器中运行
您不需要 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);
}
....
....
构建 war 并将其放置在 Tomcat 的 webapps 文件夹中的典型部署方案不需要 Main 方法。您只需要:
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
但是,如果您希望在开发或 build an executable jar or a war 可以 运行 独立于 Spring Boot 的嵌入式 tomcat 只需 java -jar myapp.war
命令,入口点 class 和 main 方法可能会有帮助。
在 Spring Boot 中,基本上需要三样东西:
1) 使用@SpringBootApplication注解
2) 扩展 SpringBootServletInitializer
3) 覆盖如上所示的配置方法
就是这样!
我正在使用 Spring Boot 开发 Web 应用程序。我的典型部署是生成 war
并将其放置在 Tomcat 目录中的 webapps
文件夹中。
我注意到 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);
}
}
在单独的网络容器中运行
您不需要 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);
}
....
....
构建 war 并将其放置在 Tomcat 的 webapps 文件夹中的典型部署方案不需要 Main 方法。您只需要:
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
但是,如果您希望在开发或 build an executable jar or a war 可以 运行 独立于 Spring Boot 的嵌入式 tomcat 只需 java -jar myapp.war
命令,入口点 class 和 main 方法可能会有帮助。
在 Spring Boot 中,基本上需要三样东西:
1) 使用@SpringBootApplication注解
2) 扩展 SpringBootServletInitializer
3) 覆盖如上所示的配置方法
就是这样!