从零开始 Spring Boot 5:SpringApplication

本文详细介绍了Spring Boot 5中SpringApplication的特性,包括Lazy Initialization、Banner自定义、命令行参数处理、ApplicationRunner和CommandLineRunner接口的使用。通过实例展示了如何配置和使用这些功能,帮助读者更好地理解和掌握Spring Boot的应用启动与管理。
摘要由CSDN通过智能技术生成

从零开始 Spring Boot 5:SpringApplication

spring boot

图源:简书 (jianshu.com)

我们的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}
=====================================================

再运行你就可以看到类似这样的输出:

===============================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值