一、SpringApplication
SpringApplication
类提供了一个方便的方法来启动 Spring
项目。
public static void main(String[] args) {
SpringApplication.run(MySpringConfiguration.class, args);
}
在应用程序启动时,可以看下类似下面的输出内容:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.1.RELEASE)
2020-03-03 13:57:35.594 INFO 5342 --- [ main] c.s.s.Springboot01HelloworldApplication : Starting Springboot01HelloworldApplication on yanjundong with PID 5342 (/Users/yanjundong/IdeaProjects/springboot-01-helloworld/target/classes started by yanjundong in /Users/yanjundong/IdeaProjects/springboot-01-helloworld)
默认情况下,输入 INFO
级别日志消息,包括启动相关的信息,例如启动应用程序的用户。
如果需要 调整日志的输出级别 ,可以另外设置。
1、启动失败
2、延迟初始化(Lazy Initialization)
SpringApplication
允许延迟初始化应用程序。启用惰性初始化后,将根据需要创建bean,而不是在应用程序启动时就创建bean。因此,启动延迟初始化可以减少应用程序启动花费的时间。在web应用中,启动延迟初始化将导致许多web相关的bean直到接收到了 HTTP请求
才会被初始化。
延迟初始化的缺点:
- 不能够及时发现应用的问题。如果一个配置错误的bean被延迟初始化,那这个错误就只能在启动之后才会发现。
- 必须要确保JVM有足够的内存来容纳所有的bean,而不仅仅是启动时初始化的bean。
基于以上原因,默认情况下,是没有启动延迟初始化的。
启动延迟初始化的方式:
-
使用
SpringApplicationBuilder
中的lazyInitialization
方法 -
使用
SpringApplication
中的setLazyInitialization
方法 -
使用
spring.main.lazy-initialization
属性配置spring.main.lazy-initialization=true
如果应用程序启动了延迟初始化,但是想要对某些bean禁用延迟初始化,可以使用
@Lazy(false)
将延迟属性设置为false
3、自定义Banner
将 banner.txt
文件添加到类路径(maven项目中的 resources
下)或者也可以将 spring.banner.location
属性设置为此类文件的位置来更改启动时打印的横幅。
如果文件的编码方式不是 UTF-8
,则可以设置 spring.banner.charset
。
除了文本文件,还可以添加banner.gif
,banner.jpg
或banner.png
图像文件,用法和 banner.txt
一样。
在banner.txt
文件内部,可以使用以下任意占位符:
变量 | 描述 |
---|---|
${application.version} | 用来获取MANIFEST.MF 文件中的版本号。例如1.0 |
${application.formatted-version} | 格式化后的${application.version} 版本信息。例如: v1.0 |
${spring-boot.version} | 当前使用Spring Boot的版本。例如 2.2.4.RELEASE |
${spring-boot.formatted-version} | 格式化后的${spring-boot.version} 版本信息。例如v2.2.4.RELEASE |
${Ansi.NAME} (or ${AnsiColor.NAME} , ${AnsiBackground.NAME} , ${AnsiStyle.NAME} ) | |
${application.title} | 用来获取MANIFEST.MF 文件中的应用程序的标题。例如MyApp |
可以通过配置 spring.main.banner-mode
属性的值来确定banner的输出位置:
console
—— System.out(console)打印- log——配置的logger
- off——不制作
默认打印的banner是作为一个单独的bean注册在 SpringBootBanner
中。
Banner字符可以通过以下网站生成:
- http://patorjk.com/software/taag
- http://www.network-science.de/ascii/