欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SprngBoot项目内部tomcat没有启动(springboot 设置web和非web启动)

程序员文章站 2022-06-12 18:06:05
...

springBoot区分web和非web项目

老版本:


#server config
#web_environment是否是web项目
spring.main.web_environment=true
#是否加载springboot banner
spring.main.show_banner=false

现版本:

#server config
#是否设定web应用,none-非web,servlet-web应用
spring.main.web-application-type=servlet
#加载springboot banner的方式:off-关闭,console-控制台,log-日志
spring.main.banner-mode=off

WebApplicationType原理:

public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {
    this.resourceLoader = resourceLoader;
    Assert.notNull(primarySources, "PrimarySources must not be null");
    this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));
    this.webApplicationType = deduceWebApplicationType();
    setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));
    setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));
    this.mainApplicationClass = deduceMainApplicationClass();
}

deduceWebApplicationType()推断当前环境是哪种Web环境(Servlet、Reactive),或者不是Web环境,判断逻辑为Classpath是够有以下类:
存在org.springframework.web.reactive.DispatcherHandler且不存在org.springframework.web.servlet.DispatcherServlet为WebApplicationType.REACTIVE;
同时存在javax.servlet.Servlet、org.springframework.web.context.ConfigurableWebApplicationContext 为WebApplicationType.SERVLET;
否则为 WebApplicationType.NONE
在这里this.webApplicationType = WebApplicationType.SERVLET;

所谓的banner就是控制台打印的一堆线组成的spring
SprngBoot项目内部tomcat没有启动(springboot 设置web和非web启动)

相关标签: 那些年趟过的坑