Spring Boot 是一个基于 Spring 框架的快速应用开发框架,旨在尽可能简化 Spring 应用程序的创建、开发和部署。在 Spring Boot 的背后有一套强大的启动机制和自动化配置。
本文将深入探索 Spring Boot 的启动流程,包括 Spring Boot 的三种启动方式和启动核心类、主函数入口、SpringApplication.run() 方法分析、Spring Boot 的自动配置原理等。
Spring Boot 支持三种启动方式,分别是:
命令行方式启动:
在命令行中输入 java -jar demo.jar 即可启动应用程序,demo.jar 是应用的可执行 jar 包。
Maven 启动方式:
在 Maven 中使用 Spring Boot 插件,通过调用 Maven 命令启动应用程序。
IDE 启动方式:
在集成开发环境(IDE)中,右键单击主类并选择 “Run” 即可启动应用程序。
下面,我们来看一下 Spring Boot 的启动核心类。
SpringApplication
是 Spring Boot 启动的核心类,它提供了各种配置和应用程序的启动方法。SpringApplication 的主要作用是创建一个 Spring 应用程序,并将所有 Spring 组件加载到应用程序的上下文中。
下面是启动核心类的代码片段:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
SpringApplication 类中有一个静态方法 run()
,它是 Spring Boot 应用程序的入口点。
该方法有两个参数,一个是启动类的 class 对象,另一个是 main 函数的参数 args。
以下是 SpringApplication.run() 方法的流程:
Spring Boot 的自动配置原理是基于 Spring Framework 的 spring-factories
机制实现的,它根据 classpath 路径下的 META-INF/spring.factories
文件来自动配置应用程序。
例如org.springframework.boot.autoconfigure.EnableAutoConfiguration
就是 Spring Boot 的自动化配置类,但是实际上具体实现需要到spring-boot-autoconfigure
工程中。
可以在应用程序的配置文件 application.properties 或 application.yml 中配置 Spring Boot 的自动化配置类,例如:
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
以上配置表示 DataSourceAutoConfiguration
不会被自动加载。
下面我们以一个简单的 Spring Boot Web 应用程序为例,来说明 Spring Boot 启动流程的细节。
webdemo
的 Spring Boot Web 应用程序:$ spring init --dependencies=web webdemo
其中 --dependencies=web
表示我们会使用 Spring Boot Web 依赖。
src/main/java/com/example/webdemo/
目录下创建一个名为 HelloController.java
的类:@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
在该类中,我们使用 @RestController
注解标记该类为 Spring MVC 控制器,并在该类中创建一个 hello()
方法,该方法返回一个字符串 "Hello, World!"。
src/main/resources/application.properties
文件中添加如下内容:server.port=8080
logging.level.root=info
其中,server.port
配置了 Web 服务器端口,logging.level.root
配置了日志级别。
$ ./mvnw spring-boot:run
运行成功后,在浏览器访问 http://localhost:8080/hello,即可看到输出的字符串 "Hello, World!"。
这就是一个简单的 Spring Boot Web 应用程序的示例,从中我们可以了解到 Spring Boot 的启动流程。
本文链接:http://task.lmcjl.com/news/8025.html