栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot学习笔记4-SpringApplication

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot学习笔记4-SpringApplication

前言

以spring官方文档为基础,官方地址:Spring Boot

目前官方正式版本最新为:2.5.3(这个学习笔记系列基本是以翻译为主,不用浪费时间期望获取更多。更多是给自己看官方文档做的的一个笔记)

当前篇的内容:介绍官方文档2.5.3的第七章之SpringApplication特性

1. 延迟初始化

SpringApplication允许应用延迟初始化。延迟初始化的bean会在需要时创建,而不是应用启动时。这样会减少应用启动时间。在 Web 应用程序中,启用延迟初始化将导致许多与 Web 相关的 bean 在收到 HTTP 请求之前不会被初始化。

延迟初始化的缺点:
(1)会延迟发现应用程序的问题。如果错误配置的 bean 被延迟初始化,则启动期间将不再发生故障,并且只有在初始化 bean 时问题才会显现。
(2)必须确保 JVM 有足够的内存来容纳所有应用程序的 bean,而不仅仅是那些在启动期间初始化的 bean。
由于这些原因,默认情况下不启用延迟初始化,建议在启用延迟初始化之前对 JVM 的堆大小进行微调。

延迟初始化实现方式:
(1)编程式:SpringApplicationBuilder的lazyInitialization方法/SpringApplication的setLazyInitialization方法
(2)配置文件中属性配置:spring.main.lazy-initialization=true

2. Web环境的“推断算法”--WebApplicationType

(1)如果项目中存在Spring MVC,则使用AnnotationConfigServletWebServerApplicationContext
(2)如果Spring MVC 不存在而Spring WebFlux存在,则使用AnnotationConfigReactiveWebServerApplicationContext
(3)否则使用AnnotationConfigApplicationContext

3. Application Events and Listeners-事件/监听器

如果有些事件实际上是在ApplicationContext创建之前触发的,因此不能将这些事件注册为@Bean。

但是可以使用SpringApplication.addListeners(…​)方法或SpringApplicationBuilder.listeners(…​)方法注册它们。
如果希望无论应用是否创建,都想注册某些监听器。可以增加meta-INF/spring.factories文件。增加配置:org.springframework.context.ApplicationListener=com.example.project.MyLi

Stener
另,SpringApplicationEvents包括:

4. ApplicationRunner和CommandLineRunner的使用

如果需要在SpringApplication启动后,运行点什么代码,可以选择实现ApplicationRunner或CommandLineRunner接口。
如果实现的接口需要有序执行,可以再另外实现org.springframework.core.Ordered接口,或者使用注解org.springframework.core.annotation.Order

import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(1)
public class MyCommandLineRunner implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        // Do something...
        System.out.println("hhhhhhhhhhhhhhhhhhhhhh");
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458958.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号