我对SpringApplicationBuilder的用例感到困惑

时间:2020-11-10 19:41:17

标签: java spring spring-boot

我正在学习春季靴工作。到目前为止,我主要使用JavaScript和Node。我正在完成一个教程,并且偶然发现了

package com.example.demosubmissionform;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan

@SpringBootApplication
public class DemoSubmissionFormApplication extends SpringBootServletInitializer {

    // @Override
    // protected SpringApplicationBuilder configure(SpringApplicationBuilder
    // application) {
    // return application.sources(DemoSubmissionFormApplication.class);
    // }

    public static void main(String[] args) {
        SpringApplication.run(DemoSubmissionFormApplication.class, args);
    }

}

我一直在研究代码,试图弄清楚它是如何工作的,并学习所使用的类。我已经浏览了文档,但是发现的信息并不能真正解释SpringApplicationBuilder类的功能。我已经注释掉了,该程序仍然可以正常运行。

很抱歉长期困扰。感谢您的协助。

P.S:@ComponentScan批注是多余的,对吗?看起来它已经带有@SpringBootApplication注释。

1 个答案:

答案 0 :(得分:1)

将Spring Boot应用程序打包为war文件并将其部署到应用程序服务器或Servlet容器时,需要使用SpringApplicationBuilder的代码。如果您要打包应用程序为jar文件,并使用java -jar(使用Spring Boot的典型方法)运行它,则不需要configure方法,也不需要扩展{ {1}}。

您可以在reference documentation中进一步了解SpringBootServletInitializerSpringBootServletInitializer和传统战争部署。

您正确地认为SpringApplicationBuilder注释是多余的。如您所说,它已经是@ComponentScan的一部分。

相关问题