首页 > 其他分享 >【SpringBoot每日学习 - 第一天】SpringApplication 启动类:属性篇

【SpringBoot每日学习 - 第一天】SpringApplication 启动类:属性篇

时间:2024-11-15 17:49:59浏览次数:3  
标签:SpringBoot 第一天 启动 Spring Boot SpringApplication private 应用 Banner

SpringApplication 类是 Spring Boot 应用启动的核心类之一,包含了大量的属性,控制着应用启动的各个方面。这些属性涵盖了从配置环境、应用上下文类型、Banner 显示、启动日志、事件监听等多个方面。以下是 SpringApplication 类中重要属性的详细说明及其用途:

  1. 静态属性

DEFAULT_CONTEXT_CLASS

public static final String DEFAULT_CONTEXT_CLASS = "org.springframework.context.annotation.AnnotationConfigApplicationContext";

描述:该属性指定了默认的应用上下文类型,当应用在非 Web 环境下启动时使用。
用途:Spring Boot 在非 Web 环境下(如控制台应用)默认使用 AnnotationConfigApplicationContext,这是 Spring 中的一个基于注解的应用上下文实现。

DEFAULT_SERVLET_WEB_CONTEXT_CLASS

public static final String DEFAULT_SERVLET_WEB_CONTEXT_CLASS = "org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext";

描述:该属性指定了默认的应用上下文类型,当应用在传统的 Servlet Web 环境下启动时使用。
用途:在 Servlet 环境下,Spring Boot 默认使用 AnnotationConfigServletWebServerApplicationContext,它支持嵌入式 Web 服务器(如 Tomcat、Jetty 等)和基于注解的配置。

DEFAULT_REACTIVE_WEB_CONTEXT_CLASS

public static final String DEFAULT_REACTIVE_WEB_CONTEXT_CLASS = "org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext";

描述:该属性指定了默认的应用上下文类型,当应用在响应式 Web 环境下启动时使用。
用途:在响应式 Web 环境下,Spring Boot 使用 AnnotationConfigReactiveWebServerApplicationContext 来支持 WebFlux 等响应式编程模型。

BANNER_LOCATION_PROPERTY_VALUE

public static final String BANNER_LOCATION_PROPERTY_VALUE = SpringApplicationBannerPrinter.DEFAULT_BANNER_LOCATION;

描述:指定了 Banner 的默认位置,即 Banner 文件的路径。
用途:这个属性指定了启动时显示 Banner 的位置,默认指向 SpringApplicationBannerPrinter.DEFAULT_BANNER_LOCATION,即通过 SpringApplication 打印出来的 ASCII 风格 Banner。

BANNER_LOCATION_PROPERTY

public static final String BANNER_LOCATION_PROPERTY = SpringApplicationBannerPrinter.BANNER_LOCATION_PROPERTY;

描述:Banner 位置的属性键,允许通过配置文件或命令行参数设置 Banner 的位置。
用途:此属性是 Banner 位置的配置项,Spring Boot 允许在启动时通过 spring.banner.location 设置 Banner 文件的位置。

SYSTEM_PROPERTY_JAVA_AWT_HEADLESS

private static final String SYSTEM_PROPERTY_JAVA_AWT_HEADLESS = "java.awt.headless";

描述:该属性用于指定 Java 环境是否在 headless 模式下运行。
用途:headless 模式通常用于没有图形用户界面的环境中(如服务器),Spring Boot 启动时可能会根据该属性来配置应用环境。

logger

private static final Log logger = LogFactory.getLog(SpringApplication.class);

描述:用于记录 SpringApplication 类的日志实例。
用途:用于输出日志,通常会用于输出启动信息和调试信息。

  1. 实例属性

primarySources

private Set<Class<?>> primarySources;

描述:该属性存储应用启动的主要源类。
用途:主要源类通常是标注了 @SpringBootApplication 或 @Configuration 的类,Spring Boot 启动时会从这些类开始初始化 Spring 容器。

sources

private Set<String> sources = new LinkedHashSet<>();

描述:存储从启动类中指定的源(通常是配置类或主应用类)。
用途:sources 用于存储应用启动时的类路径资源,它会影响到 Spring 环境和上下文的初始化。

mainApplicationClass

private Class<?> mainApplicationClass;

描述:存储 Spring Boot 应用的主类。
用途:用于确定应用的主类,通常是被 @SpringBootApplication 注解的类。它是启动过程中最初的类,指示应用的入口。

bannerMode

private Banner.Mode bannerMode = Banner.Mode.CONSOLE;

描述:控制 Banner 显示的模式。
用途:Banner.Mode.CONSOLE 表示在控制台显示 Banner,Banner.Mode.OFF 表示不显示 Banner,Banner.Mode.LOG 表示将 Banner 输出到日志中。

logStartupInfo

private boolean logStartupInfo = true;

描述:控制是否记录应用启动时的日志信息。
用途:如果为 true,Spring Boot 在启动时会打印详细的启动信息;如果为 false,则不会打印。

addCommandLineProperties

private boolean addCommandLineProperties = true;

描述:控制是否将命令行参数添加到 Spring 环境中。
用途:如果为 true,Spring Boot 会将命令行中的参数(如 --key=value)添加到应用的环境中。可以用于配置覆盖。

addConversionService

private boolean addConversionService = true;

描述:控制是否添加 Spring 类型转换服务。
用途:如果为 true,Spring Boot 会在应用启动时自动添加类型转换器,支持将配置属性自动转换为 Java 类型。

banner

private Banner banner;

描述:自定义的 Banner 实例。
用途:允许开发者提供自定义的 Banner。如果设置为 null,则使用默认 Banner。你可以通过 setBanner() 方法设置自定义 Banner。

resourceLoader

private ResourceLoader resourceLoader;

描述:应用的资源加载器。
用途:Spring Boot 使用 resourceLoader 加载应用中的资源(如文件、配置文件等),它是 Spring 中资源加载机制的一部分。

beanNameGenerator

private BeanNameGenerator beanNameGenerator;

描述:用于生成 Bean 名称的生成器。
用途:在 Spring 容器中注册 Bean 时,beanNameGenerator 用于生成 Bean 的名称。

environment

private ConfigurableEnvironment environment;

描述:应用的环境实例,提供访问系统环境变量、配置属性等信息的能力。
用途:environment 用于存储与应用相关的环境配置(如 application.properties 或 application.yml),并可以在启动过程中对其进行修改。

applicationContextClass

private Class<? extends ConfigurableApplicationContext> applicationContextClass;

描述:指定应用使用的上下文类。
用途:允许开发者自定义应用上下文的类型。比如,可以设置为 AnnotationConfigApplicationContext 或 GenericWebApplicationContext 等。

webApplicationType

private WebApplicationType webApplicationType;

描述:确定应用是否为 Web 应用,及其类型。
用途:根据该属性,Spring Boot 会决定是否需要启动嵌入式 Web 服务器,并且选择合适的应用上下文类型。常见的有 WebApplicationType.SERVLET 和 WebApplicationType.REACTIVE。

headless

private boolean headless = true;

描述:决定应用是否在 headless 模式下运行。
用途:如果为 true,表示应用在没有图形界面的环境中运行,通常在服务器环境中会设置为 true。

registerShutdownHook

private boolean registerShutdownHook = true;

描述:决定是否注册 JVM 关闭钩子。
用途:如果为 true,Spring Boot 会在 JVM 关闭时自动关闭 Spring 上下文。适用于希望在应用关闭时清理资源的场景。

initializers

private List<ApplicationContextInitializer<?>> initializers;

描述:应用上下文的初始化器。
用途:initializers 列表中可以添加自定义的 ApplicationContextInitializer,它们会在 Spring 环境初始化之前执行,用于配置和定制上下文。

listeners

private List<ApplicationListener<?>> listeners;

描述:应用事件的监听器。
用途:listeners 用于存储应用启动过程中的事件监听器,例如监听环境事件、应用上下文事件等。

defaultProperties

private Map<String, Object> defaultProperties; 

描述:存储 Spring Boot 启动时使用的默认配置属性。
用途:defaultProperties 用于存储应用启动时默认的配置参数。它允许开发者通过编程方式设置一些默认的配置项,例如 application.properties 或 application.yml 中的配置。如果没有通过配置文件或环境变量提供这些属性,它们将作为默认值使用。

additionalProfiles

private Set<String> additionalProfiles = new HashSet<>();

描述:存储应用启动时附加的 profiles(配置文件)。
用途:additionalProfiles 可以包含额外的配置文件(spring.profiles.active)的 profiles。通过设置不同的 profiles,Spring Boot 可以根据不同环境加载不同的配置文件。开发者可以通过该属性指定其他的 profiles,用于调整应用的配置。

allowBeanDefinitionOverriding

private boolean allowBeanDefinitionOverriding;

描述:控制是否允许覆盖 Bean 定义。
用途:如果设置为 true,允许同一类型的多个 Bean 定义之间发生覆盖。在某些场景下(如测试或多模块项目),可能需要覆盖现有的 Bean 定义。默认情况下,Spring 会阻止同一类型的 Bean 被多次定义。

isCustomEnvironment

private boolean isCustomEnvironment = false;

描述:标记是否使用了自定义的 ConfigurableEnvironment。
用途:如果设置为 true,说明启动过程中应用使用了自定义的环境配置(比如自定义的 Environment 实现类)。这对于一些复杂的配置场景是非常有用的,尤其是在需要完全自定义 Spring 环境时。

lazyInitialization

private boolean lazyInitialization = false;

描述:控制 Spring Boot 是否启用懒加载。
用途:如果为 true,Spring Boot 将启用懒加载模式,即 Bean 将在需要时才被初始化,而不是在应用启动时就被立即加载。懒加载可以提高应用的启动速度,但可能导致某些 Bean 在使用时延迟加载。

总结

  • 应用上下文类型:DEFAULT_CONTEXT_CLASS、DEFAULT_SERVLET_WEB_CONTEXT_CLASS 和 DEFAULT_REACTIVE_WEB_CONTEXT_CLASS 决定了应用启动时使用的上下文类型,分别适用于非 Web 环境、Servlet Web 环境和响应式 Web 环境。
  • Banner 配置:BANNER_LOCATION_PROPERTY_VALUE 和 BANNER_LOCATION_PROPERTY 允许开发者定制应用启动时显示的 Banner 信息。
  • 环境配置:environment、isCustomEnvironment 和 defaultProperties 控制了 Spring 应用的环境,提供了对环境变量和配置文件的管理。Web 应用类型:webApplicationType 决定应用是 Servlet Web 应用还是响应式 Web 应用,或者是非 Web 应用。
  • 应用启动日志:logStartupInfo 控制是否记录启动信息,bannerMode 控制 Banner 显示的模式。
  • 命令行参数和转换服务:addCommandLineProperties 和 addConversionService 提供了对命令行参数和类型转换的支持。
  • 应用上下文初始化和事件监听:initializers 和 listeners 控制了 Spring 应用启动过程中的初始化器和事件监听器,允许开发者在启动过程中插入自定义的逻辑。
  • 其他配置:lazyInitialization 控制是否启用懒加载,allowBeanDefinitionOverriding 控制是否允许 Bean 定义的覆盖,additionalProfiles 可以用于指定额外的配置文件或环境。

标签:SpringBoot,第一天,启动,Spring,Boot,SpringApplication,private,应用,Banner
From: https://blog.csdn.net/qq_40759033/article/details/143719431

相关文章

  • SpringBoot 3.3.5 集成 mybatis-plus-boot-starter 3.4.2报错
    一、环境JDK:17SpringBoot:3.3.5Mybatis-Plus:3.4.2二、报错信息Considerthefollowing: Ifyouwantanembeddeddatabase(H2,HSQLorDerby),pleaseputitontheclasspath. Ifyouhavedatabasesettingstobeloadedfromaparticularprofileyoumayneed......
  • springboot整合ES及其基本使用
    Springboot整合ElasticSearch导入依赖<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>${elasticsearch.version}</version>......
  • 基于Java+SpringBoot的校园资产管理
    关注底部领取源码源码编号:S324源码名称:基于SpringBoot的校园资产管理用户类型:双角色,用户、管理员主要技术:Java、Vue、ElementUl、SpringBoot运行环境:Windows/Mac、JDK1.8及以上运行工具:IDEA/Eclipse数 据 库:MySQL5.7及以上版本数据库表数量:11张表是否有毕业论文......
  • 基于Java+SpringBoot的人事管理系统
    关注底部领取源码源码编号:S323源码名称:基于SpringBoot的人事管理系统用户类型:双角色,员工、管理员主要技术:Java、Vue、ElementUl、SpringBoot运行环境:Windows/Mac、JDK1.8及以上运行工具:IDEA/Eclipse数 据 库:MySQL5.7及以上版本数据库表数量:13张表是否有毕业论文......
  • 基于Java+SpringBoot的老年一站式服务平台
    关注底部领取源码源码编号:S322源码名称:基于SpringBoot的老年一站式服务平台用户类型:多角色,用户、商家、员工、管理员主要技术:Java、Vue、ElementUl、SpringBoot运行环境:Windows/Mac、JDK1.8及以上运行工具:IDEA/Eclipse数 据 库:MySQL5.7及以上版本数据库表数量:18......
  • 如何深度学习SpringBoot?
    SpringBoot对于SpringBoot,我们都知道他的设计初衷是解决Spring各版本配置工作过于繁重的问题,简化初始搭建流程、降低开发难度而出现的。可以说用SpringBoot开发,我们在配置上是不用花费太多时间的。我们常常看到这样一种现象:面对Spring繁重配置工作,要是一位初学者仅仅掌握......
  • springBoot-RabbitMQ 高级特性(保姆级教程,一步一步带你熟悉RabbitMQ 相关高级特性)
    话不多说,看项目整体架构RabbitMQ高级特性保姆级教程好了,下面县开始贴生产者代码:publisher父依赖:<parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.7.18</versi......
  • SpringBoot+Vue3实现数据可视化大屏
    前端工程的地址:UserManagerFront:数据可视化前端(gitee.com)效果展示,可以展现出来了,样式可能还有一些丑。后端代码后端主要是拿到数据并对数据进行处理,按照前端需要的格式进行返回即可。importcom.njitzx.entity.Student;importcom.njitzx.entity.vo.*;import......
  • 201_springboot基于协同过滤的就业推荐系统
    目录系统展示开发背景代码实现项目案例 获取源码博主介绍:CodeMentor毕业设计领航者、全网关注者30W+群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AWS/Wired等平台优选内容创作者、深耕Web......
  • Springboot餐饮管理系统设计与实现d9u1u(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,员工,菜品信息,菜品分类,菜品订单,餐厅餐桌,订座信息,食材信息,供应商,出库信息,入库信息,食材盘点,食材采购开题报告内容一、研究背景随着餐饮行业的快速......