从零开始 Spring Boot 5:SpringApplication
我们的Spring Boot
应用是通过SpringApplication.run
启动的,启动后可以看到控制台输出欢迎信息以及一些日志信息,如果失败,也会显示相应的错误信息。
SpringApplication
的主要工作是加载相关的配置,创建Web
应用的上下文,以及启动应用等。
下面介绍和SpringApplication
相关的Spring Boot
特性。
本篇文章的演示代码基于learn_spring_boot (github.com)修改而来,你可以从相应的链接获取。
Lazy Initialization
Lazy Initialization
也可以叫做“延迟初始化”或“懒加载”,这是一个常用的Web
技术,比如大量图片的展示网页,就会在用户下滑需要展示相应图片时再真正加载图片资源,这可以节省一开始网页加载的时间和带宽。
在Sprint Boot
中,这指的是可以将相关创建和注入bean
的行为延后到真正需要这些bean
的时候,这样做可以加快应用的启动速度。但缺点是如果bean
的生成会产生bug
,那么就无法在一开始应用启动时暴露,而是延后到使用bean
时,这样就违背了“尽可能早地暴露bug”这条编程哲学。此外,延迟初始化还可能因为内存紧张的机器在一开始可以正常启动,而在需要并初始化某些bean
后导致内存不够而崩溃,着同样会掩盖问题的发生。
因此,并不推荐积极地使用这项功能。
要开启延迟初始化,可以添加以下配置项:
spring.main.lazy-initialization=true
如果开启了延迟初始化,你希望某些自动注入的组件不被延迟初始化,可以使用@Lazy(false)
注解:
@Service
@Lazy(false)
public class UserService implements UserServiceInterface {
...
}
Banner
在应用启动后,你会在控制台看到这个:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.6.7)
这个叫做Banner
(横幅),你可以用在资源目录中添加banner.txt
的方式添加“自定义banner”:
=====================================================
This is my exampled spring boot app.
name:${application.title}
version:${application.formatted-version}
spring boot version:${spring-boot.formatted-version}
=====================================================
再运行你就可以看到类似这样的输出:
===============================