zhaoyu@home:~$

springboot-SpringApplication

SpringApplication 提供了一种简便的通过main方法启动一个spring 应用的方式。多数情况下只需要代理给静态方法 SpringApplication.run。

public static void main(String[] args) {
	SpringApplication.run(MySpringConfiguration.class, args);
}

web环境

SpringApplication根据你的需求创建正确的ApplicationContext,其机制如下:

  • 如果Spring MVC被使用,AnnotationConfigServletWebServerApplicationContext 会被创建。
  • 如果Spring MVC没有被使用,Spring WebFlux被使用AnnotationConfigReactiveWebServerApplicationContext 会被创建。
  • 其他情况,AnnotationConfigApplicationContext 。

访问应用参数。

如果通过SpringApplication.run(…​)向应用传递了参数,那么可以通过ApplicationArguments 获取应用参数。


@Component
public class MyBean {

	@Autowired
	public MyBean(ApplicationArguments args) {
		boolean debug = args.containsOption("debug");
		List<String> files = args.getNonOptionArgs();
		// if run with "--debug logfile.txt" 
	}
}

应用退出

每个SpringApplication 向JVM中注册了一个shutdown hook,用于正常关闭ApplicationContext。 例如可以通过实现org.springframework.boot.ExitCodeGenerator接口自定义系统退出码。此退出码会被传递给System.exit()

@SpringBootApplication
public class ExitCodeApplication {
	@Bean
	public ExitCodeGenerator exitCodeGenerator() {
		return () -> 42;
	}
	public static void main(String[] args) {
		System.exit(SpringApplication
				.exit(SpringApplication.run(ExitCodeApplication.class, args)));
	}
}