Spring Boot的SpringApplication类详解

编程知识 更新时间:2023-04-05 04:51:38

相信使用过Spring Boot的开发人员,都对Spring Boot的核心模块中提供的SpringApplication类不陌生。SpringApplication类的run()方法往往在Spring应用的入口类中被调用,以启动Spring应用。

1.Spring应用的入口类与SpringApplication类
1) Spring应用的入口类

Spring应用的入口类是Spring应用的配置起点,是配置Spring上下文的起点,往往使用了@SpringBootApplication或@EnableAutoConfiguration等标注类。

在Spring应用的入口类中往往只有一个main()方法,这虽然与标准的Java应用保持了一致,但在有些时候会让开发人员觉得困惑。

在Spring应用的入口类中的main()方法中,往往只是简单地调用Spring Boot的SpringApplication类的run()方法,以启动该Spring应用。

SpringApplication.run(MySpringConfigurationApp.class, args);

其中,第一个参数MySpringConfigurationApp.class就是Spring应用的入口类;第二个参数args是启动Spring应用的命令行参数,该参数可以在Spring应用中被访问(稍后详解)。

2) Spring Boot的SpringApplication类

Spring Boot的SpringApplication类,用以启动一个Spring应用,实质上是为Spring应用创建并初始化Spring上下文。

SpringApplication类的run()方法默认返回一个ConfigurableApplicationContext对象。


2. SpringApplication类的其他配置

  • banner.txt以定制启动LOGO
  • 禁用LOGO
SpringApplication app = new SpringApplication(MySpringConfigurationApp.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);

  • 启动过程中的可监听事件
ApplicationStartingEvent
ApplicationEnvironmentPreparedEvent
ApplicationPreparedEvent
ApplicationReadyEvent或ApplicationFailedEvent

3. 增强SpringApplication类的CommandLineRunner接口或ApplicationRunner接口

启动Spring应用后,如果还想进一步执行其他代码,可以定义Spring bean类以实现CommandLineRunner接口或ApplicationRunner接口。

CommandLineRunner接口或ApplicationRunner接口都只提供了唯一的run()方法,该方法将在SpringApplication.run()方法执行结束前被调用。

1) CommandLineRunner接口能够以String数组的形式访问Spring应用的启动参数args

@Component
public class MyBean implements CommandLineRunner {
	public void run(String... args) {
		// Do something...
	}
}

2) ApplicationRunner接口能够以ApplicationArguments的形式访问应用的参数args

@Component
public class MyBean implements ApplicationRunner{
	public void run(ApplicationArguments args) {
		// Do something...
	}
}

4. 在Spring bean中,通过构造函数访问Spring应用的启动参数args

@Component
public class MyBean {
  @Autowired
  public MyBean(ApplicationArguments args) {
    boolean debug = args.containsOption("debug");//参数作为命令行中的一个option,如--debug
    List<String> files = args.getNonOptionArgs();
    // 如果启动参数"--debug logfile.txt",
    // 则debug=true, files=["logfile.txt"]
  }
}


参考链接:

http://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/reference/htmlsingle/

更多推荐

Spring Boot的SpringApplication类详解

本文发布于:2023-04-05 04:51:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/54983566589af83b85b9f8cc376b2c1b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:详解   Spring   Boot   SpringApplication

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 44868文章数
  • 14阅读数
  • 0评论数