spring boot 的核心机制主要包括自动配置、起步依赖、主类和运行器、以及嵌入式服务器等。下面我们将详细介绍这些核心机制,来对spring boot有一个初步了解。
1. 自动配置 (auto-configuration)
自动配置是 spring boot 最重要的特性之一,它能够根据类路径中的依赖自动配置 spring 应用。spring boot 通过一系列的 @conditional
注解来决定哪些配置类应该被加载。
1.1 @springbootapplication 注解
@springbootapplication
是一个组合注解,包含了以下几个注解:
@configuration
:标记该类为配置类。@enableautoconfiguration
:启用自动配置。@componentscan
:启用组件扫描,自动发现和注册 spring 组件。
@springbootapplication public class myapplication { public static void main(string[] args) { springapplication.run(myapplication.class, args); } }
1.2 @enableautoconfiguration 注解
@enableautoconfiguration
注解会触发自动配置机制。spring boot 会在类路径中查找带有 @configuration
注解的类,并根据条件(如类路径中的依赖)决定是否应用这些配置。
1.3 条件注解 (@conditional)
spring boot 使用各种 @conditional
注解来控制配置类的加载条件。常见的条件注解包括:
@conditionalonclass
:当类路径中存在指定类时生效。@conditionalonmissingbean
:当容器中不存在某个 bean 时生效。@conditionalonproperty
:当配置文件中存在指定属性时生效。
2. 起步依赖 (starter dependencies)
起步依赖是 spring boot 提供的一组依赖管理,旨在简化项目配置。每个起步依赖都包含了一组相关的依赖项,使得开发者只需声明一个依赖就能引入多个相关的库。
2.1 常见的起步依赖
spring-boot-starter-web
:包含构建 web 应用所需的依赖,如 spring mvc 和嵌入式 tomcat。spring-boot-starter-data-jpa
:包含构建数据访问层所需的依赖,如 spring data jpa 和 hibernate。spring-boot-starter-test
:包含测试所需的依赖,如 junit、mockito 等。
2.2 maven 依赖示例
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-jpa</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency>
3. 主类和运行器 (main class and runners)
spring boot 应用通常有一个主类,该类包含 main
方法,用于启动应用。
3.1 主类
主类通常使用 @springbootapplication
注解,并包含 main
方法。
@springbootapplication public class myapplication { public static void main(string[] args) { springapplication.run(myapplication.class, args); } }
3.2 springapplication 类
springapplication
类负责启动 spring boot 应用。它会执行以下任务:
初始化 spring 应用上下文。加载配置文件。执行自动配置。启动嵌入式服务器(如果适用)。 3.3 运行器 (applicationrunner
和 commandlinerunner
)
你可以实现 applicationrunner
或 commandlinerunner
接口,在应用启动后执行一些初始化操作。
@component public class myrunner implements applicationrunner { @override public void run(applicationarguments args) throws exception { system.out.println("application started!"); } }
4. 嵌入式服务器 (embedded server)
spring boot 支持多种嵌入式 web 服务器,如 tomcat、jetty 和 undertow。默认情况下,spring boot 使用 tomcat 作为嵌入式服务器。
4.1 嵌入式 tomcat
spring boot 通过 spring-boot-starter-web
依赖自动包含 tomcat 的相关依赖。你可以通过配置文件来定制服务器的端口、上下文路径等属性。
4.2 自定义服务器
如果你希望使用其他服务器,可以通过排除默认的 tomcat 依赖并添加其他服务器的依赖来实现。
maven 示例
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> <exclusions> <exclusion> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-tomcat</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-jetty</artifactid> </dependency>
5. 配置文件 (configuration files)
spring boot 支持多种配置文件格式,如 application.properties
和 application.yml
。这些文件用于配置应用的各种属性。
5.1 application.properties 示例
server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=root
5.2 application.yml 示例
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: root
6. 总结
spring boot 的核心机制包括自动配置、起步依赖、主类和运行器、以及嵌入式服务器。这些机制共同作用,使得 spring boot 应用开发变得更加简单和高效。通过自动配置,spring boot 可以根据类路径中的依赖自动配置应用;通过起步依赖,开发者可以轻松管理项目依赖;通过主类和运行器,应用可以方便地启动和执行初始化操作;通过嵌入式服务器,应用可以作为一个独立的 jar 文件运行。
就是这样啦,后面笔者还会介绍怎么来定制化的写一个自己的启动类springapplication,来做一些定制化的动作。
到此这篇关于springboot核心机制的文章就介绍到这了,更多相关springboot核心机制内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论