Spring Boot簡介
Spring Boot是一個基於Java的開源框架,用於創建微服務。它由Pivotal Team開發,用於構建獨立的生產就緒Spring應用。 本章將介紹Spring Boot,並熟悉基本概念。
微服務是什麼?
微服務(Micro Service)是一種允許開發人員獨立開發和部署服務的體系結構。每個運行的服務都有自己的流程,這實現了輕量級模型以支持業務應用程序。
優點
微服務爲其開發人員提供以下優勢 -
- 易於部署
- 簡單的可擴展性
- 與容器兼容
- 最低配置
- 生產時間較短
Spring Boot是什麼?
Spring Boot爲Java開發人員提供了一個很好的平臺,可以開發一個可以運行的獨立和生產級Spring應用程序。可以開始使用最少的配置,而無需進行整個Spring配置設置。
優點
Spring Boot爲其開發人員提供以下優勢 -
- 易於理解和開發Spring應用
- 提高生產力
- 縮短開發時間
目標
Spring Boot的設計目標如下 -
- 避免在Spring中進行復雜的XML配置
- 以更簡單的方式開發生產就緒的Spring應用程序
- 減少開發時間並獨立運行應用程序
- 提供一種更簡單的應用程序入門方式
爲什麼選擇Spring Boot?
選擇Spring Boot,因爲它提供的功能和優點如下 -
- 它提供了一種靈活的方法來配置Java Bean,XML配置和數據庫事務。
- 它提供強大的批處理和管理REST端點。
- 在Spring Boot中,一切都是自動配置的; 無需手動配置。
- 它提供基於註釋的spring應用程序。
- 簡化依賴管理。
- 它包括嵌入式Servlet容器。
Spring Boot是如何工作的?
Spring Boot會根據使用[@EnableAutoConfiguration](https://github.com/EnableAutoConfiguration "@EnableAutoConfiguration")
批註添加到項目中的依賴項自動配置應用程序。 例如,如果MySQL數據庫在類路徑上,但尚未配置任何數據庫連接,則Spring Boot會自動配置內存數據庫。
spring boot應用程序的入口點是包含[@SpringBootApplication](https://github.com/SpringBootApplication "@SpringBootApplication")
註釋和main
方法的類。
Spring Boot使用[@ComponentScan](https://github.com/ComponentScan "@ComponentScan")
註釋自動掃描項目中包含的所有組件。
Spring Boot Starters
處理依賴管理對於大項目來說是一項艱鉅的任務。 Spring Boot通過提供一組依賴項來解決此問題,以方便開發人員。
例如,如果要使用Spring和JPA進行數據庫訪問,則在項目中包含spring-boot-starter-data-jpa
依賴項就足夠了。
請注意,所有Spring Boot啓動程序都遵循相同的命名模式spring-boot-starter-*
,其中*
表示它是應用程序的一種類型。
例子
請看下面的Spring Boot啓動器,以便更好地理解 -
Spring Boot Starter Actuator依賴關係用於監視和管理應用程序。 其代碼如下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Spring Boot Starter Security依賴項用於Spring Security。 其代碼如下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Spring Boot Starter Web依賴項用於編寫Rest端點。 其代碼如下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot Starter Thyme Leaf依賴項用於創建Web應用程序。 其代碼如下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Spring Boot Starter Test依賴項用於編寫測試用例。 其代碼如下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test<artifactId>
</dependency>
自動配置
Spring Boot Auto Configuration會根據在項目中添加的JAR依賴項自動配置Spring應用程序。例如,如果MySQL數據庫在類路徑上,但尚未配置任何數據庫連接,則Spring Boot會自動配置內存數據庫。
爲此,需要將[@EnableAutoConfiguration](https://github.com/EnableAutoConfiguration "@EnableAutoConfiguration")
批註或[@SpringBootApplication](https://github.com/SpringBootApplication "@SpringBootApplication")
批註添加到主類文件中。然後,將自動配置Spring Boot應用程序。
請注意以下代碼以便更好地理解 -
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@EnableAutoConfiguration
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Spring Boot應用程序
Spring Boot Application的入口點是包含[@SpringBootApplication](https://github.com/SpringBootApplication "@SpringBootApplication")
註釋的類。該類應具有運行Spring Boot應用程序的主要方法。 [@SpringBootApplication](https://github.com/SpringBootApplication "@SpringBootApplication")
註釋包括自動配置,組件掃描和Spring Boot配置。
如果將[@SpringBootApplication](https://github.com/SpringBootApplication "@SpringBootApplication")
批註添加到類中,則無需添加[@EnableAutoConfiguration](https://github.com/EnableAutoConfiguration "@EnableAutoConfiguration")
,[@ComponentScan](https://github.com/ComponentScan "@ComponentScan")
和[@SpringBootConfiguration](https://github.com/SpringBootConfiguration "@SpringBootConfiguration")
批註。[@SpringBootApplication](https://github.com/SpringBootApplication "@SpringBootApplication")
註釋包括所有其他註釋。
請注意以下代碼以便更好地理解 -
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
組件掃描
Spring Boot應用程序在應用程序初始化時掃描所有bean和包聲明。需要爲類文件添加[@ComponentScan](https://github.com/ComponentScan "@ComponentScan")
批註,以掃描項目中添加的組件。
請注意以下代碼以便更好地理解 -
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}