Springboot核心機制詳細(xì)介紹
Spring Boot 的核心機制主要包括自動配置、起步依賴、主類和運行器、以及嵌入式服務(wù)器等。下面我們將詳細(xì)介紹這些核心機制,來對Spring Boot有一個初步了解。
1. 自動配置 (Auto-configuration)
自動配置是 Spring Boot 最重要的特性之一,它能夠根據(jù)類路徑中的依賴自動配置 Spring 應(yīng)用。Spring Boot 通過一系列的 @Conditional
注解來決定哪些配置類應(yīng)該被加載。
1.1 @SpringBootApplication 注解
@SpringBootApplication
是一個組合注解,包含了以下幾個注解:
@Configuration
:標(biāo)記該類為配置類。@EnableAutoConfiguration
:啟用自動配置。@ComponentScan
:啟用組件掃描,自動發(fā)現(xiàn)和注冊 Spring 組件。
@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
1.2 @EnableAutoConfiguration 注解
@EnableAutoConfiguration
注解會觸發(fā)自動配置機制。Spring Boot 會在類路徑中查找?guī)в?@Configuration
注解的類,并根據(jù)條件(如類路徑中的依賴)決定是否應(yīng)用這些配置。
1.3 條件注解 (@Conditional)
Spring Boot 使用各種 @Conditional
注解來控制配置類的加載條件。常見的條件注解包括:
@ConditionalOnClass
:當(dāng)類路徑中存在指定類時生效。@ConditionalOnMissingBean
:當(dāng)容器中不存在某個 Bean 時生效。@ConditionalOnProperty
:當(dāng)配置文件中存在指定屬性時生效。
2. 起步依賴 (Starter Dependencies)
起步依賴是 Spring Boot 提供的一組依賴管理,旨在簡化項目配置。每個起步依賴都包含了一組相關(guān)的依賴項,使得開發(fā)者只需聲明一個依賴就能引入多個相關(guān)的庫。
2.1 常見的起步依賴
spring-boot-starter-web
:包含構(gòu)建 Web 應(yīng)用所需的依賴,如 Spring MVC 和嵌入式 Tomcat。spring-boot-starter-data-jpa
:包含構(gòu)建數(shù)據(jù)訪問層所需的依賴,如 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 應(yīng)用通常有一個主類,該類包含 main
方法,用于啟動應(yīng)用。
3.1 主類
主類通常使用 @SpringBootApplication
注解,并包含 main
方法。
@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
3.2 SpringApplication 類
SpringApplication
類負(fù)責(zé)啟動 Spring Boot 應(yīng)用。它會執(zhí)行以下任務(wù):
初始化 Spring 應(yīng)用上下文。加載配置文件。執(zhí)行自動配置。啟動嵌入式服務(wù)器(如果適用)。 3.3 運行器 (ApplicationRunner
和 CommandLineRunner
)
你可以實現(xiàn) ApplicationRunner
或 CommandLineRunner
接口,在應(yīng)用啟動后執(zhí)行一些初始化操作。
@Component public class MyRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("Application started!"); } }
4. 嵌入式服務(wù)器 (Embedded Server)
Spring Boot 支持多種嵌入式 Web 服務(wù)器,如 Tomcat、Jetty 和 Undertow。默認(rèn)情況下,Spring Boot 使用 Tomcat 作為嵌入式服務(wù)器。
4.1 嵌入式 Tomcat
Spring Boot 通過 spring-boot-starter-web
依賴自動包含 Tomcat 的相關(guān)依賴。你可以通過配置文件來定制服務(wù)器的端口、上下文路徑等屬性。
4.2 自定義服務(wù)器
如果你希望使用其他服務(wù)器,可以通過排除默認(rèn)的 Tomcat 依賴并添加其他服務(wù)器的依賴來實現(xiàn)。
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
。這些文件用于配置應(yīng)用的各種屬性。
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. 總結(jié)
Spring Boot 的核心機制包括自動配置、起步依賴、主類和運行器、以及嵌入式服務(wù)器。這些機制共同作用,使得 Spring Boot 應(yīng)用開發(fā)變得更加簡單和高效。通過自動配置,Spring Boot 可以根據(jù)類路徑中的依賴自動配置應(yīng)用;通過起步依賴,開發(fā)者可以輕松管理項目依賴;通過主類和運行器,應(yīng)用可以方便地啟動和執(zhí)行初始化操作;通過嵌入式服務(wù)器,應(yīng)用可以作為一個獨立的 JAR 文件運行。
就是這樣啦,后面筆者還會介紹怎么來定制化的寫一個自己的啟動類SpringApplication,來做一些定制化的動作。
到此這篇關(guān)于Springboot核心機制的文章就介紹到這了,更多相關(guān)Springboot核心機制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis-Plus開發(fā)提速器mybatis-plus-generator-ui詳解
這篇文章主要介紹了Mybatis-Plus開發(fā)提速器mybatis-plus-generator-ui,本文簡要介紹一款基于Mybatis-Plus的代碼自助生成器,文章通過實例集成的方式來詳細(xì)講解mybatis-plus-generator-ui,從相關(guān)概念到實際集成案例,以及具體的擴展開發(fā)介紹,需要的朋友可以參考下2022-11-11mybatis的association傳遞參數(shù)問題示例
這篇文章主要介紹了mybatis的association傳遞參數(shù)問題,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12Spring Cloud 2020.0.0正式發(fā)布再見了Netflix
這篇文章主要介紹了Spring Cloud 2020.0.0正式發(fā)布再見了Netflix,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12SpringBoot之返回json數(shù)據(jù)的實現(xiàn)方法
這篇文章主要介紹了SpringBoot之返回json數(shù)據(jù)的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12如何利用IDEA搭建SpringBoot項目整合mybatis實現(xiàn)簡單的登錄功能
這篇文章主要介紹了如何利用IDEA搭建SpringBoot項目整合mybatis實現(xiàn)簡單的登錄功能,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08