第三节 理解 SpringApplication1

preview
需积分: 0 0 下载量 100 浏览量 更新于2022-08-03 收藏 316KB PDF 举报
理解 SpringApplication SpringApplication 是 Spring Boot 框架中一个核心组件,负责加载和配置应用程序的上下文环境。在本节中,我们将详细了解 SpringApplication 的基本使用、运行机制、自定义配置、API 调整等方面的知识点。 SpringApplication 基本使用 SpringApplication 是一个静态工厂类,提供了一个静态方法 `run()`,用于启动 Spring Boot 应用程序。该方法接受两个参数:应用程序的主类(Main Class)和命令行参数数组。例如: ```java SpringApplication.run(DiveInSpringBootApplication.class, args); ``` 这个方法将创建一个 SpringApplication 实例,并将其配置为使用指定的主类和命令行参数数组。 SpringApplication 运行机制 当我们调用 `run()` 方法时,SpringApplication 会执行以下步骤: 1. 推断 Web 应用类型:根据 ClassPath 中的实现类,推断出 Web 应用的类型,包括 Web Reactive、Web Servlet 和非 Web 应用。 2. 推断引导类(Main Class):根据 Main 线程执行堆栈判断实际的引导类。 3. 加载应用上下文初始器(ApplicationContextInitializer):利用 Spring 工厂加载机制,实例化 ApplicationContextInitializer 实现类,并排序对象。 4. 创建应用上下文(ApplicationContext):根据配置和环境信息,创建一个 ApplicationContext 实例。 5. 启动应用程序:使用创建的 ApplicationContext 实例启动应用程序。 自定义 SpringApplication SpringApplication 提供了多种方式来自定义配置,包括: 1. 通过 `setBannerMode()` 方法设置 Banner 模式。 2. 通过 `setWebApplicationType()` 方法设置 Web 应用类型。 3. 通过 `setAdditionalProfiles()` 方法设置额外的配置文件。 4. 通过 `setHeadless()` 方法设置是否启用头less 模式。 例如: ```java SpringApplication springApplication = new SpringApplication(DiveInSpringBootApplication.class); springApplication.setBannerMode(Banner.Mode.CONSOLE); springApplication.setWebApplicationType(WebApplicationType.NONE); springApplication.setAdditionalProfiles("prod"); springApplication.setHeadless(true); ``` 通过 SpringApplicationBuilder API 调整 SpringApplicationBuilder 是一个 fluent API,提供了多种方式来自定义 SpringApplication 配置。例如: ```java new SpringApplicationBuilder(DiveInSpringBootApplication.class) .bannerMode(Banner.Mode.CONSOLE) .web(WebApplicationType.NONE) .profiles("prod") .headless(true) .run(args); ``` 配置 Spring Boot Bean 源 Spring Boot 提供了多种方式来配置 Bean 源,包括: 1. Java 配置 Class:用于 Spring 注解驱动中 Java 配置类,大多数情况是 Spring 模式注解所标注的类,如 `@Configuration`。 2. XML 上下文配置文件:用于 Spring 传统配置驱动中的 XML 文件。 这些配置源将被加载到 ApplicationContext 中,并被用于创建 BeanDefinition。 SpringApplication 是 Spring Boot 框架中一个核心组件,负责加载和配置应用程序的上下文环境。通过了解 SpringApplication 的基本使用、运行机制、自定义配置和 API 调整,我们可以更好地使用 Spring Boot 框架来构建高效、可靠的应用程序。