Spring Boot 特性 —— SpringApplication
来源:互联网 发布:淘宝卖的电工证真的吗 编辑:程序博客网 时间:2024/05/16 19:22
概要
通过前面的学习,我们了解了如何构建一个 Spring Boot 应用以及 Spring Boot 项目的基本配置,这里我们将逐步细化到每个具体的功能模块来了解 Spring Boot 的特性。
使用SpringApplication引导项目启动
SpringApplication
类为我们引导项目提供了一种便利的方式——通过main()
方法直接启动。大多数情况下,我们可以把项目启动这个任务直接委托给SpringApplication.run
方法:
public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, args);}
启动完成以后,你可以看到控制台输出如下:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: v1.4.1.RELEASE2013-07-31 00:08:16.117 INFO 56603 --- [ main] o.s.b.s.app.SampleApplication : Starting SampleApplication v0.1.0 on mycomputer with PID 56603 (/apps/myapp.jar started by pwebb)2013-07-31 00:08:16.166 INFO 56603 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6e5a8246: startup date [Wed Jul 31 00:08:16 PDT 2013]; root of context hierarchy2014-03-04 13:09:54.912 INFO 41370 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Server initialized with port: 80802014-03-04 13:09:56.501 INFO 41370 --- [ main] o.s.b.s.app.SampleApplication : Started SampleApplication in 2.992 seconds (JVM running for 3.658)
Spring Boot 默认会输出 INFO
级别的日志,还包括一些相关的启动详细信息。
如果启动失败,Spring Boot 的FailureAnalyzers
就会输出相关的错误信息,然后一个专用的处理器会对这个错误进行相关的处理。Spring Boot 提供了很多这样的失败分析器,如果还不能满足要求,你也可以自己通过实现FailureAnalyzer
接口来构建自己的错误分析器。当然,如果你想看到更详细的异常输出,你可以通过设置以下日志处理类的debug属性或者设置日志级别为DEBUG
模式来达到这个目的。
org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer
如果你使用java -jar
命令来启动项目,那么你可以通过如下方式来设置debug属性:
$ java -jar myproject-0.0.1-SNAPSHOT.jar --debug
配置Banner
你可以通过添加一个banner.txt
文件到你的classpath路径下,来改变在启动的时候打印的banner信息,或者通过设置banner.location
属性来设置该文件的位置,通过banner.charset
来设置文件的编码,你也可以添加banner.gif
,banner.jpg
, `banner.png
图片文件到classpath,或者通过设置banner.image.location
属性来作为banner信息,这些图片会被转换为有艺术感的ASCII,并且打印在文本的顶部。banner.txt
中可以设置如下的占位符:
${application.version}
The version number of your application as declared in MANIFEST.MF
. For example Implementation-Version: 1.0
is printed as 1.0
. ${application.formatted-version}
The version number of your application as declared in MANIFEST.MF
formatted for display (surrounded with brackets and prefixed with v
). For example (v1.0)
. ${spring-boot.version}
The Spring Boot version that you are using. For example 1.4.1.RELEASE
. ${spring-boot.formatted-version}
The Spring Boot version that you are using formatted for display (surrounded with brackets and prefixed with v
). For example (v1.4.1.RELEASE)
. ${Ansi.NAME}
(or ${AnsiColor.NAME}
, ${AnsiBackground.NAME}
, ${AnsiStyle.NAME}
) Where NAME
is the name of an ANSI escape code. See AnsiPropertySource for details. ${application.title}
The title of your application as declared in MANIFEST.MF
. For example Implementation-Title: MyApp
is printed as MyApp
. 可以通过设置spring.main.banner-mode
属性来控制输出,如下,在application.properties
文件中添加如下属性,将会覆盖SpringApplication中的默认配置:
# 打印到控制台spring.main.banner-mode=console# 打印到日志文件# spring.main.banner-mode=log# 不打印# spring.main.banner-mode=off
配置SpringApplication
如果SpringApplication
无法满足要求,你可以自己创建一个局部实例,然后对其进行设置:
public static void main(String[] args) { SpringApplication app = new SpringApplication(MySpringConfiguration.class); //关闭Banner打印 app.setBannerMode(Banner.Mode.OFF); //添加监听器 app.addListeners(new MyListener()); ... app.run(args);}
SpringApplication的相关配置将会被@Configuration
注解的类,XML配置文件,以及Spring扫描的包引用。更详细的配置选项,参见SpringApplication Javadoc。
你也可以通过SpringApplicationBuilder
来对SpringApplication的属性进行配置,这样的结构更有层次感。SpringApplicationBuilder
为构建 SpringApplication 和 ApplicationContext 实例提供了一套便利的流式API:
new SpringApplicationBuilder() .sources(Parent.class) .child(Application.class) .bannerMode(Banner.Mode.OFF) .listeners(new MyListener()) ... .run(args);
SpringApplication
将会根据需要创建一个ApplicationContext,默认情况下,如果是非web应用,则会创建一个AnnotationConfigApplicationContext
上下文,如果是web应用,则会创建一个AnnotationConfigEmbeddedWebApplicationContext
上下文。当然,你也可以通过setWebEnvironment(boolean webEnvironment)
来覆盖默认的设置。
ApplicationRunner 和 CommandLineRunner
如果你希望在SpringApplication
启动之前完成某些操作,你可以通过实现ApplicationRunner
或者CommandLineRunner
接口来实现。这两个接口提供了一个run
方法,会在SpringApplication.run(…)
完成之前被调用。适用于系统初始化配置的加载,启动检查等等。
import org.springframework.boot.*import org.springframework.stereotype.*@Componentpublic class MyBean implements CommandLineRunner { public void run(String... args) { // Do something... }}
如果有多个CommandLineRunner
或者ApplicationRunner
的实现,并且这些都需要按照一定的顺序来执行,你可以通过实现org.springframework.core.Ordered
接口或者使用org.springframework.core.annotation.Order
注解来设置这些的执行顺序。
- Spring Boot 特性 —— SpringApplication
- Spring Boot【原理分析】(1)——SpringApplication
- 23.1 SpringApplication spring boot 启动
- Spring Boot的SpringApplication类详解
- Spring Boot的SpringApplication类详解
- Spring boot源码分析-SpringApplication启动(1)
- Spring Boot 学习笔记(三)——特性
- IV. Spring Boot特性
- Spring Boot特性
- spring boot 特性
- java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
- java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
- Spring Boot教程 - 2. Spring Boot提供的特性
- Spring Boot学习第二篇:Spring Boot特性
- Spring boot学习笔记 001——初识Spring boot
- Spring Boot(1)——Spring Boot简介
- Spring Boot(3)—— Spring Boot Web开发
- spring boot日志—logback
- Mp4v2实现h264+aac打包成Mp4视频文件
- 实战Linux CentOS7 安装LNMP环境架构过程之编译nginx
- 如何从文本中移除空白内容
- NodeJ连接Redis
- C++模板常用功能讲解
- Spring Boot 特性 —— SpringApplication
- 构造算法的思维过程
- leetcode_p6_ZigZag_Conversion_c++
- gdb C++程序coredump不显示行号问题
- [linux 命令] ctags
- 如何实现货币数据的格式化输出
- 算法库algorithm-5-minmax
- iOS 新项目搭建
- android上传图片至服务器