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原理:
1 public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { 2 this.resourceLoader = resourceLoader; 3 Assert.notNull(primarySources, "PrimarySources must not be null"); 4 this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources)); 5 this.webApplicationType = deduceWebApplicationType(); 6 setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class)); 7 setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class)); 8 this.mainApplicationClass = deduceMainApplicationClass(); 9 }
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