SpringBoot文档之SpringApplication的阅读笔记

  • Reference

  • Core Features

  • SpringApplication

    使用SpringBoot开发应用,最简单的启动类,代码内容如下:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class MyApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    
    }
    

    当SpringBoot应用程序启动失败时,通过定制FailureAnalyzer可以获得详细的错误描述信息。
    SpringBoot允许应用开发者注册自定义的FailureAnalyzer的实现类,实现方法可参考文档

    SpringBoot提供延迟初始化特性,允许Bean在使用时才完成构建和初始化操作,无需在启动时即完成全部Bean的构建和初始化操作。
    使用延迟初始化特性的优点,可以加快应用程序启动,缩短启动时间。
    使用延迟初始化特性的缺点,应用启动时只有部分必要的Bean完成了初始化,在处理业务时才会完成Bean的构建和初始化,可能掩盖一些程序逻辑层面的问题。
    使用延迟初始化特性时,需要考虑为Java应用分配足够的资源,避免触发Bean的构建和初始化,由于资源不足而失败。

    在配置文件中增加如下配置,可以启用延迟初始化特性:

    spring:
        main:
            lazy-initialization: true
    

    对于关键的Bean,不期望使用延迟初始化特性,可以在类名上增加注解@Lazy(false),关闭延迟初始化特性。

    如下是SpringBoot应用程序启动时在控制台输出的Banner。

    .   ____          _            __ _ _
    /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
    \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
    '  |____| .__|_| |_|_| |_\__, | / / / /
    =========|_|==============|___/=/_/_/_/
    
    :: Spring Boot ::                (v3.3.2)
    

    SpringBoot允许开发者定制Banner,操作方法如下:

    • 在类路径中增加文件banner.txt
    • 使用属性spring.banner.location指定banner.txt的位置。

    SpringBoot在读取banner.txt时,默认文件编码为UTF-8。通过修改属性spring.banner.charset,可以修改解析banner.txt时的编码格式。

    关闭Banner,样例代码,如下:

    import org.springframework.boot.Banner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class MyApplication {
    
        public static void main(String[] args) {
            SpringApplication application = new SpringApplication(MyApplication.class);
            application.setBannerMode(Banner.Mode.OFF);
            application.run(args);
        }
    }
    

    SpringBoot框架在应用启动过程中,按序触发如下事件:

    • ApplicationStartingEvent
    • ApplicationEnvironmentPreparedEvent
    • ApplicationContextInitializedEvent
    • ApplicationPreparedEvent
    • ApplicationStartedEvent
    • AvailabilityChangeEvent
    • ApplicationReadyEvent
    • AvailabilityChangeEvent
    • ApplicationFailedEvent

    对于实现接口ApplicationContextAware的Bean,SpringBoot应用初始化过程中会自动注入ApplicationContext对象的实例。

    对于一般的应用开发者而言,对上述事件仅做基本了解即可。

    通过定义Bean来接收ApplicationArguments,可以读取SpringBoot应用启动时的命令行参数。
    SpringApplication运行后,执行一些业务相关的代码,可以定义实现接口ApplicationRunner或者CommandLineRunner的Bean。
    SpringBoot允许开发者定义多个实现ApplicationRunner或者CommandLineRunner的Bean,这些Bean之间的执行顺序,可以通过实现接口org.springframework.core.Ordered或者使用注解org.springframework.core.annotation.Order来定制。

    SpringBoot允许开发者通过实现ExitCodeGenerator接口的Bean来定制程序退出时的错误码,借以满足特定运行环境、特定业务场景的诉求。

    修改SpringBoot应用的配置文件,增加配置项spring.application.admin.enabled并指定为true,可以开启管理特性。

    假如开发者使用Java 21来开发、运行SpringBoot应用程序,可以考虑增加如下配置项,并指定为true,从而启用Java 21的virtual threads特性。

    • spring.threads.virtual.enabled
    • spring.main.keep-alive
  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小南家的青蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值