Spring Boot 特性

SpringApplication类
在主类——即带有@SpringBootApplication注解类,的main方法里调用SpringApplication.run(应用的Configration配置类.class,参数列表) 会启动spring应用。默认log级别是INFO,会显示一些相关的启动详情,比如启动应用的用户等。

1. 使用SpringApplicationBuilder类可以创建分层的 ApplicationContext

new SpringApplicationBuilder()
.bannerMode(Banner.Mode.OFF)
.sources(Parent.class)
.child(Application.class)
.run(args);
2. Application事件和监听器
除了常用的Spring framework事件,例如ContextRefreshedEvent等,SpringApplication也会发送一些其他的应用事件。 
一些事件在ApplicationContext被创建之前就被触发,因此无法将监听器注册为bean来监听。但是可以使用SpringApplication.addListeners(…) 或SpringApplicationBuilder.listeners(…)来注册监听器。也可以在META-INF/spring.factories文件定义监听器: 
org.springframework.context.ApplicationListener=com.example.project.MyListener 
应用运行时,应用事件发送顺序如下: 
① 在监听器和初始化器被初始化之后,任何其他应用之前,应用刚开始运行时会发送一个ApplicationStartedEvent。 
② 在context被创建之前,context中要使用的Environment被知道时,一个ApplicationEnvironmentPreparedEvent被发送。 
③ 在bean定义被加载之后,refresh启动之前,一个ApplicationPreparedEvent被发送。 
④ 在refresh以及任何相关的回调被处理之后,一个ApplicationReadyEvent被发送,表明应用已准备好服务requests。 
⑤ 启动时如果发生异常,一个ApplicationFailedEvent被发送。
3. web环境
SpringApplication会根据应用是否为web来创建不同的ApplicationContext: AnnotationConfigApplicationContext或AnnotationConfigEmbeddedWebApplicationContext。 
可以调用setWebEnvironment(boolean webEnvironment)复写默认实现(在junit测试时置为false最好),更可以使用setApplicationContextClass(…).完全控制ApplicationContext的创建。

4. 在SpringApplication.run完成前执行特定代码
使用ApplicationRunner或CommandLineRunner,并配合Order注解指定调用顺序。 
CommandLineRunner的run(String …args)方法直接访问SpringApplication.run传递的参数,ApplicationRunner的run方法则使用ApplicationArguments访问参数。例如:

import org.springframework.boot.*
import org.springframework.stereotype.*
@Component
public class MyBean implements CommandLineRunner {
public void run(String... args) {
// Do something...
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值