Springboot核心機制詳細介紹
Spring Boot 的核心機制主要包括自動配置、起步依賴、主類和運行器、以及嵌入式服務(wù)器等。下面我們將詳細介紹這些核心機制,來對Spring Boot有一個初步了解。
1. 自動配置 (Auto-configuration)
自動配置是 Spring Boot 最重要的特性之一,它能夠根據(jù)類路徑中的依賴自動配置 Spring 應(yīng)用。Spring Boot 通過一系列的 @Conditional 注解來決定哪些配置類應(yīng)該被加載。
1.1 @SpringBootApplication 注解
@SpringBootApplication 是一個組合注解,包含了以下幾個注解:
@Configuration:標記該類為配置類。@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 類負責(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。默認情況下,Spring Boot 使用 Tomcat 作為嵌入式服務(wù)器。
4.1 嵌入式 Tomcat
Spring Boot 通過 spring-boot-starter-web 依賴自動包含 Tomcat 的相關(guān)依賴。你可以通過配置文件來定制服務(wù)器的端口、上下文路徑等屬性。
4.2 自定義服務(wù)器
如果你希望使用其他服務(wù)器,可以通過排除默認的 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: root6. 總結(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的代碼自助生成器,文章通過實例集成的方式來詳細講解mybatis-plus-generator-ui,從相關(guān)概念到實際集成案例,以及具體的擴展開發(fā)介紹,需要的朋友可以參考下2022-11-11
mybatis的association傳遞參數(shù)問題示例
這篇文章主要介紹了mybatis的association傳遞參數(shù)問題,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12
Spring Cloud 2020.0.0正式發(fā)布再見了Netflix
這篇文章主要介紹了Spring Cloud 2020.0.0正式發(fā)布再見了Netflix,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
SpringBoot之返回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)簡單的登錄功能,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08

