配置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);
}
- 1
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.*
@Component
public class MyBean implements CommandLineRunner {
public void run(String... args) {
// Do something...
}
}
如果有多个CommandLineRunner
或者ApplicationRunner
的实现,并且这些都需要按照一定的顺序来执行,你可以通过实现org.springframework.core.Ordered
接口或者使用org.springframework.core.annotation.Order
注解来设置这些的执行顺序。
配置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