首页 > 其他分享 >从零开始学Spring Boot系列-SpringApplication

从零开始学Spring Boot系列-SpringApplication

时间:2024-04-07 22:56:41浏览次数:17  
标签:Spring args Boot SpringApplication 使用 banner public

SpringApplication类提供了一种从main()方法启动Spring应用的便捷方式。在很多情况下, 你只需委托给 SpringApplication.run这个静态方法 :

    @SpringBootApplication
    public class SpringbootLearningApplication {

        public static void main(String[] args) {
            SpringApplication.run(SpringbootLearningApplication.class, args);
        }

    }

当应用启动时, 你应该会看到类似下面的东西:
20240407182652
默认情况下会显示INFO级别的日志信息, 包括一些相关的启动详情, 比如启动应用的用户等。

自定义Banner

通过在classpath下添加一个banner.txt或设置banner.location来指定相应的文件可以改变启动过程中打印的banner。如果这个文件有特殊的编码,你可以使用banner.encoding设置它(默认为UTF-8)。
在banner.txt中可以使用如下的变量:

变量 描述
$ MANIFEST.MF中声明的应用版本号, 例如1.0
$ MANIFEST.MF中声明的被格式化后的应用版本号(被括号包裹且以v作为前缀),用于显 示,例如(v1.0)
$ 正在使用的Spring Boot版本号, 例如3.2.3
$ 正在使用的Spring Boot被格式化后的版本号(被括号包裹且以v作为前缀), 用于显示,例如(v3.2.3)

注:如果想以编程的方式产生一个banner,可以使用SpringBootApplication.setBanner(…)方法。使用org.springframework.boot.Banner接口,实现你自己的printBanner()方法。

自定义SpringApplication

如果默认的SpringApplication不符合你的口味,你可以创建一个本地的实例并自定义它。例如,关闭banner你可以这样写:

@SpringBootApplication
public class SpringbootLearningApplication {

 public static void main(String[] args) {
  SpringApplication app =new SpringApplication(SpringbootLearningApplication.class);
  app.setBannerMode(Banner.Mode.OFF);
  app.run(args);
 }

}

注:传递给SpringApplication的构造器参数是spring beans的配置源。在大多数情况下,这些将是@Configuration类的引用,但它们也可能是XML配置或要扫描包的引用。

Application事件和监听器

除了常见的Spring框架事件,比如ContextRefreshedEvent,一个SpringApplication也发送一些额外的应用事件。一些事件实际上是在ApplicationContext被创建前触发的。
你可以使用多种方式注册事件监听器,最普通的是使用SpringApplication.addListeners(…)方法。在你的应用运行时,应用事件会以下面的次序发送:

  1. 在运行开始,但除了监听器注册和初始化以外的任何处理之前,会发送一个ApplicationStartedEvent。
  2. 在Environment将被用于已知的上下文,但在上下文被创建前,会发送一个ApplicationEnvironmentPreparedEvent。
  3. 在refresh开始前,但在bean定义已被加载后,会发送一个ApplicationPreparedEvent。
  4. 启动过程中如果出现异常,会发送一个ApplicationFailedEvent。

注 :你通常不需要使用应用程序事件, 但知道它们的存在会很方便(在某些场合可能会使用到)。在Spring内部, Spring Boot使用事件处理各种各样的任务。

Web环境

一个SpringApplication将尝试为你创建正确类型的ApplicationContext。在默认情况下,使用AnnotationConfigApplicationContext或AnnotationConfigEmbeddedWebApplicationContext取决于你正在开发的是否是web应用。

用于确定一个web环境的算法相当简单(基于是否存在某些类)。如果需要覆盖默认行为,你可以使用setWebEnvironment(boolean webEnvironment)。通过调用setApplicationContextClass(…),你可以完全控制ApplicationContext的类型。

注: 当JUnit测试里使用SpringApplication时,调用setWebEnvironment(false)是可取的。

命令行启动器

如果你想获取原始的命令行参数,或一旦SpringApplication启动,你需要运行一些特定的代码,你可以实现CommandLineRunner接口。在所有实现该接口的Spring beans上将调用run(String … args)方法。

@Component
public class MyBean implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        System.out.println("启动前执行");
    }
}

如果一些CommandLineRunner beans被定义必须以特定的次序调用, 你可以额外实现org.springframework.core.Ordered接口或使用org.springframework.core.annotation.Order注解。

Application退出

每个SpringApplication在退出时为了确保ApplicationContext被优雅的关闭, 将会注册一个JVM的shutdown钩子。所有标准的Spring生命周期回调(比如, DisposableBean接口或@PreDestroy注解)都能使用。

此外, 如果beans想在应用结束时返回一个特定的退出码(exit code),可以实现org.springframework.boot.ExitCodeGenerator接口。

标签:Spring,args,Boot,SpringApplication,使用,banner,public
From: https://www.cnblogs.com/daimajiangxin/p/18120105

相关文章

  • SpringBoot中的Tomcat(内嵌式)使用及分析
    前言Tomcat是我们在项目中使用最多的Web应用服务器,今天通过代码来简单分析下SpringBoot中是如何启动内嵌式Tomcat的。使用importjava.io.File;importjava.io.IOException;importjava.nio.charset.StandardCharsets;importjava.util.HashSet;importjava.util.Se......
  • Springboot计算机毕业设计财务报销微信小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,微信小程序作为一种新型的应用形态,以其便捷、高效的特点受到了广大用户的青睐。在高等教育领域,财务管理是学校运营中不......
  • Springboot计算机毕业设计博物馆预约小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在信息化、数字化日益发展的今天,博物馆作为传承历史文化的重要场所,其管理和服务方式也在不断革新。传统的博物馆参观方式往往受限于开放时间、参观人......
  • 微服务集成Spring Cloud Zipkin实现链路追踪并集成Dubbo
    1、什么是ZipKinZipkin是一个根据Google发表的论文“Dapper”进行开源实现的分布式跟踪系统。Dapper是Google公司内部的分布式追踪系统,用于生产环境中的系统分布式跟踪。Google在其论文中对此进行了解释,他们“构建了Dapper,以向Google开发人员提供有关复杂分布式系统行为......
  • 【Spring进阶系列丨第七篇】Spring框架新注解分类及详解
    文章目录一、Spring新注解1.1、Configuration注解1.1.1、定义一个类1.1.2、使用Configuration注解修饰类1.1.3、作用1.2、Bean注解1.2.1、定义bean1.2.2、在主配置类中注册bean1.2.3、测试容器中是否有该bean1.2.4、注册bean的同时可以指定bean名称1.2.5、补充内容1.2.5......
  • @SpringbootApplication注解
    @SpringBootConfiguration是一个组合注解,由@ComponentScan、@EnableAutoConfiguration和@SpringBootConfiguration组成@SpringBootConfiguration与普通@Configuration相比,唯一区别是前者要求整个app中只出现一次@ComponentScanexcludeFilters-用来在组件扫描......
  • springMVC基础
    三:SpringMVC1、SpringMVC简介1.1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存储业务数据的,如Student、User等一类称为业务处理Bean:指Service或......
  • Spring内存马分析
    环境搭建踩了很多坑....,不过还好最后还是成功了IDEA直接新建javaEE项目,然后记得把index.jsp删了,不然DispatcherServlet会失效导入依赖:<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId&g......
  • SpringBoot 日志显示(truncate...),输出完整日志
    本文地址:https://www.cnblogs.com/hchengmx/p/18119562在查看SpringBoot查看日志中,http的responsebody会显示不全,如下:2024-04-0709:39:53.758|172.17.0.8|DEBUG|[qtp1763344271-7365]|org.springframework.core.log.LogFormatUtils.traceDebug(LogFormatUtils.java:119)|Writi......
  • SpringBalale docker-compose
    docker-composeversion:'3'services:mysql-svc:image:mysql:5.7container_name:mysqlports:-3306:3306environment:TZ:Asia/ShanghaiMYSQL_ROOT_PASSWORD:rootcommand:--character-set-server=utf......