Spring Boot的SpringApplication类详解
来源:互联网 发布:德国足球 知乎 编辑:程序博客网 时间:2024/06/04 18:23
相信使用过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类详解
- Spring Boot的SpringApplication类详解
- 23.1 SpringApplication spring boot 启动
- Spring Boot 特性 —— SpringApplication
- Spring Boot【原理分析】(1)——SpringApplication
- Spring boot源码分析-SpringApplication启动(1)
- Spring Boot的Maven插件Spring Boot Maven plugin详解
- Spring Boot的Maven插件Spring Boot Maven plugin详解
- Spring Boot学习(二):Spring Boot的启动器Starter详解
- Spring Boot的Maven插件Spring Boot Maven plugin详解
- SpringBoot项目创建报:java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication错误的解决方案
- java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
- java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
- Spring Boot的启动器Starter详解
- Spring Boot的启动器Starter详解
- Spring Boot的启动器Starter详解
- Spring Boot的启动器Starter详解
- Spring Boot的启动器Starter详解
- 剑指Offer-8:二叉树的下一个节点
- 频道管理简单的移动
- oracle-两个 count(1) 相减 的两种方法
- Axis2与CXF的区别
- Spring Boot报错:This application has no explicit mapping ... a fallback
- Spring Boot的SpringApplication类详解
- 瞄一眼法人VIP报告好过2018年
- 风险控制小结
- Quartz启动报错scheduling.quartz.SchedulerFactoryBean#0' defined in URL
- [Leetcode] 543. Diameter of Binary Tree 解题报告
- 订单详情
- intelij idea 快速启动 springboot项目
- 【转】react-native集成支付宝
- Centos7下安装Tensorflow