您的位置:首页 > 软件教程 > 教程 > SpringApplication类的介绍与使用指南

SpringApplication类的介绍与使用指南

来源:好特整理 | 时间:2024-04-08 08:49:22 | 阅读:81 |  标签: T cat 从零开始 Ri S C in 开始 app   | 分享到:

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

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

@SpringBootApplication
public class SpringbootLearningApplication {

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

}

当应用启动时,你应该看到类似下面的内容:

SpringApplication类的介绍与使用指南

默认情况下,会显示INFO级别的日志信息,包括一些相关的启动详情,比如启动应用的用户等。

自定义Banner

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

在banner.txt中可以使用如下的变量:

变量 描述
application.version MANIFEST.MF中声明的应用版本号,例如1.0
application.formatted-version MANIFEST.MF中声明的被格式化后的应用版本号(被括号包裹且以v作为前缀),用于显示,例如(v1.0)
spring-boot.version 正在使用的Spring Boot版本号,例如3.2.3
spring-boot.formatted-version 正在使用的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接口。

小编推荐阅读

好特网发布此文仅为传递信息,不代表好特网认同期限观点或证实其描述。

从零开始
从零开始
类型:动作冒险  运营状态:内测  语言:中文   

游戏攻略

游戏礼包

游戏视频

游戏下载

游戏活动

《从零开始》是游戏商从零开始游戏工作室开发的一款多人在线的沙盒冒险游戏,游戏采用庞大的无缝沙盒地图
RPG Ri序章 0.2.1
RPG Ri序章 0.2.1
类型:角色扮演  运营状态:正式运营  语言: 日文  

游戏攻略

游戏礼包

游戏视频

游戏下载

游戏活动

《RPG_Ri序章》是GameMaker'Child-Dream'制作的一款幻想废土风RPG手游,完全免费的幻想废土风RPG登场!元

相关视频攻略

更多

扫二维码进入好特网手机版本!

扫二维码进入好特网微信公众号!

本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件[email protected]

湘ICP备2022002427号-10 湘公网安备:43070202000427号© 2013~2024 haote.com 好特网