1 首页定制
1找到WebMvcAutoConfiguration,的 welcomePageHandlerMapping方法
@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext,
FormattingConversionService mvcConversionService, ResourceUrlProvider mvcResourceUrlProvider) {
//welcomePageHandlerMapping 欢迎页映射器,
WelcomePageHandlerMapping welcomePageHandlerMapping = new WelcomePageHandlerMapping(
new TemplateAvailabilityProviders(applicationContext),
// getWelcomePage() 从那个地方找到首页
applicationContext, getWelcomePage(),
//staticPathPattern = "/**";
this.mvcProperties.getStaticPathPattern());
welcomePageHandlerMapping.setInterceptors(getInterceptors(mvcConversionService, mvcResourceUrlProvider));
welcomePageHandlerMapping.setCorsConfigurations(getCorsConfigurations());
return welcomePageHandlerMapping;
}
{ "classpath:/META-INF/resources/",
"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
// 经过发现默认从以下位置找到首页
即如果访问localhost:8080 则默认在下面路径寻找首页
"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/" };
2 访问http://localhost:8080/
2 SpringBoot 相关特性
1 Lazy Initialization 惰性初始模式
特点
- 可以减少应用程序启动的时间。在 web 应用程序中,启用惰性初始模式将导致许多与 web 相关的 bean 在接收到 HTTP 请求之前不会被初始化。
缺点 - 延迟发现应用程序的问题。如果一个配置错误的 bean 以惰性方式初始化,那么在启动过程中将不再发生故障,并且只有当 bean 被初始化时问题才会变得明显
- 必须注意确保 JVM 有足够的内存来容纳应用程序的所有 bean
惰性初始模式在默认情况下是不启用的,建议在启用惰性初始模式之前对 JVM 的堆大小进行微调。
- 在应用程序的其他部分使用惰性初始模式的时候禁用某些 bean,你可以使用
@Lazy(false)
annotation. 注释
2 打印横幅
SpringBoot 支持启动时,自定义banner设置
1 在类路径中添加 banner.txt
2 将 spring.banner.location 属性设置为该文件的位置
3 如果文件的编码不是 UTF-8,可以设置 spring.banner.charset
在 banner.txt 文件中,你可以使用以下任何占位符:
Variable 变量 | Description 描述 |
---|---|
${ application.version } | 应用程序的版本号 |
${ spring-boot. version } | 正在使用的 Spring Boot 版本。 |
${ application.title } | 应用程序的标题 |
${ application.formatted-version } | 应用程序的版本号(带v)(v1.0) |
如果banner.txt有图标,则说明springBoot 已经检查到自定义的banner
3 Using the ApplicationRunner or CommandLineRunner
如果您需要在 SpringApplication 启动后运行一些特定的代码,您可以实现 ApplicationRunner 或 CommandLineRunner 接口
- 如果定义了多个ApplicationRunner,可以使用@Order定义他们之间的启动顺序
例子
@Component
@Order(2)
public class MyApplication implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("run");
}
}
//
@Component
@Order(1)
public class MyApplication2 implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("run2");
}
}
结果如图
4 Application Exit应用程序退出
org.springframework.boot.ExitCodeGenerator 可以实现
。如果他们希望在调用 SpringApplication.exit ()时返回特定的退出代码然后可以将这个,退出代码传递给 System.exit () ,以作为状态代码返回
@SpringBootApplication
public class ExitCodeApplication {
@Bean
public ExitCodeGenerator exitCodeGenerator() {
return () -> 42;
}
public static void main(String[] args) {
System.exit(SpringApplication.exit(SpringApplication.run(ExitCodeApplication.class, args)));
}
}