<mark id="5z1b5"><cite id="5z1b5"></cite></mark>

        <video id="5z1b5"></video>
          <noframes id="5z1b5"><ins id="5z1b5"></ins>

            <em id="5z1b5"></em>

            <dl id="5z1b5"><ins id="5z1b5"></ins></dl>

              什么是Spring Boot?

                Spring Boot是一個真正的游戲改變者,它的受歡迎程度現在不斷增加。讓我們看看Spring Boot到底是什么?Spring Boot是一個構建在Spring框架頂部的項目。它提供了一種更簡單、更快捷的方法來設置、配置和運行簡單和基于Web的應用程序。

               在過去Spring框架中,我們需要為應用配置所有的內容,會有許多配置文件,例如XML或元注釋,這是Spring Boot解決的主要問題之一,基本無需XML配置了,都使用@注釋。

               Spring boot巧妙地根據我們選擇的依賴配置,可以自動啟動我們想要的所有功能,并且只需單擊一下即可啟動應用程序。此外,它還簡化了應用程序的部署過程。

                 初次使用Spring Boot可能讓你感覺似乎發生了什么許多“神奇”的事情。

              Spring Boot組件

              1. Spring Boot自動配置: Spring啟動能夠檢測某些框架的可用性,例如Spring Data JPA,Spring Batch,Hibernate和JDBC。一旦檢測到框架,它將自動配置它。
              2. Spring Boot Core:是其他Spring模型的基礎。它提供了某些功能,可以通過驗證自行完成。
              3. Spring Boot Starters:幫助啟動項目,它會自動添加啟動項目和依賴項。

                 Spring Boot特點

                • 用來實現微服務;
                • 自動配置
                • 自定義配置
                • 模塊化
                • 獨立打包 直接運行
                • 內嵌服務器
                • Spring cloud的基礎

              實現微服務

                 微服務是一種細小粒度的服務,可直接通過端口對外提供服務,Spring Boot提供REST風格API暴露微服務,與客戶端交換采取JSON數據格式。

              自動配置

               Spring Boot的最佳功能之一是它根據您的依賴關系自動配置您的應用程序。它不僅智能,活躍,而且具有上下文智能,并記錄您的要求。我們以數據庫功能為例。如果你向pom.xml添加了一個需求,它與數據庫有某種關系,那么Spring引導本身假定你想要使用數據庫,因此它允許你的應用程序隨時使用該數據庫。

               只要在pom.xml增加相應依賴就等同于加入相應的組件:
              <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
              </dependency>

              上面配置說明這個應用啟動了pring-boot-starter-web的功能,也就是能提供REST端點暴露,讓客戶端通過/xxx/xx這樣形式URL訪問內部服務和資源。

              Spring專門提供了https://start.spring.io/讓你選擇一個SpringBoot需要的組件。Idea等開發工具提供了自動導航服務。

              創建一個SpringBoot的微服務應用,只要在應用入口類上標注@SpringBootApplication:

                  @SpringBootApplication = @EnableAutoConfiguration?+ @Configuration ?+?@ComponentScan.
              •   @EnableAutoConfiguration: Spring Boot會根據添加的maven的pom.xml的依賴項自動配置加載相應的依賴組件,它能智能感知上下文。
              • @Configuration表示當前類是一個配置工廠,可生產當前項目所需的各種Bean實例,類似于XML中的<bean id=xxx name=xxxx>。如果你想為當前項目導入其他組件,除了配置pom.xml以外,還可以在這里用代碼使用工廠模式創建,類的方法上使用@Bean標注,也可用函數式方式創建,性能更好。
              • @ComponentScan是用于自動掃描包,如果不明確聲明,只使用@SpringBootApplication,那么就掃描當前所在的包和子包。

              自定義配置

               Spring Boot除了提供入口函數以外,還提供配置,有兩種形式:application.properties和application.yaml,后一種格式在Docker和K8s容器編排中比較常用。比如上面啟動了JPA,那么可以在applciation.properties中配置JPA的配置:

              spring.datasource.url=jdbc:mysql://localhost:3306/temp
              spring.datasource.username=root
              spring.datasource.password=root
              spring.datasource.driver-class-name=com.mysql.jdbc.Driver
              spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
              spring.jpa.hibernate.ddl-auto=update

              這就具體指明了JPA實現使用Hibernate,具體數據庫時MySQL。

              Spring Cloud中各個組件的配置基本都是在這里實現,基本無需寫任何代碼就可以實現服務網關、服務發現和負載平衡以及斷路器功能。

              模塊化

                 一般情況下,一個SpringBoot應用 = 一個微服務 = 一個模塊 = 一個有邊界的上下文,如果有多個模塊,我們就開發多個微服務,多個SpringBoot應用,然后使用Springcloud實現它們之間動態訪問和監控。 但是有時我們也會希望將多個模塊放入一個SpringBoot應用中,這樣模塊之間調用可以在一個JVM內進行,適合小型系統的部署,隨著規模擴大,我們還可將這些模塊變成一個個微服務,以SpringBoot應用分布式運行。

              其實就是解釋@Configuration +?@EnableAutoConfiguration?+?@ComponentScan 三個注釋:

              使用Spring Boot實現模塊化

              獨立打包

              Spring Boot允許您設計獨立的,生產級質量的應用程序,您可以在任何網站上運行而不會浪費時間。您可能認為運行Java應用程序非常簡單容易。你需要做的就是給出一個運行命令,一切都開始發生你所想到的。老實說,這不是真的!要運行java應用程序,過去需要執行以下步驟:

              • 打包你的應用
              • 選擇要運行應用程序的Web服務器類型并下載它
              • 配置該Web服務器
              • 組織部署過程

              但是,如果您使用Spring Boot技術來運行應用程序,則只需執行以下兩個步驟:

              • 打包你的申請
              • 使用一些簡單的命令運行它,例如java -jar my-application.jar

              這有多簡單啊!Spring Boot通過簡單地為您的應用程序配置和部署嵌入式Web服務器來滿足您的其余需求。

               

                Spring的主入口類是以@SpringBootApplication標注.

              @SpringBootApplication
              public class MyApplication {

              public static void main(String[] args) {
              SpringApplication.run(MyApplication.class, args);
              }
              }

              同時這個類也是Java的main類,SpringBoot打成Jar包是一種胖jar,兼容標準的Jar包,它的?MANIFEST.MF格式如下:

              Main-Class: org.springframework.boot.loader.JarLauncher
              Start-Class: com.mycompany.project.MyApplication

              也可以打包成可執行的war?包,MANIFEST.MF格式如下:


              Main-Class: org.springframework.boot.loader.WarLauncher
              Start-Class: com.mycompany.project.MyApplication

              內嵌服務器

                SpringBoot內嵌默認是tomcat,還有Jetty等其他服務器可以選擇,tomcat配置不像過去那樣我們可以直接配置,需要通過SpringBoot去配置和調度。過去的模式是:先啟動服務器,再啟動war應用,服務就啟動了;現在的模式是直接啟動服務就可以使用了。一個tomcat服務器=一個微服務。

              Spring cloud的基礎

                Spring cloud是實現分布式微服務的組件,它的基礎就是一個個Spring Boot微服務,比如服務發現就是一個嵌入了Eureka組件的Spring Boot,而服務網關則是嵌入了Zuul組件的Spring Boot,別問是如何嵌入這些組件的,在上面自動配置有講述。

              Spring Boot與Spring MVC與Spring的區別

              許多對Spring Boot知之甚少的人在使用和部署這三種Spring技術時都會感到困惑。因此,了解它們的使用時間和地點變得極為重要。

              • Spring框架:Spring Framework?的作用是提供一種依賴,也稱為控制反轉(IOC)。當適當使用IOC時,它有助于開發易于測試和使用的松散耦合應用程序。
              • Spring MVC:它提供了一種設計Web應用程序的分離方式。通過View Resolver,Dispatcher Servlet和ModelAndView?等簡單概念,開發人員可以開發應用程序而不會消耗太多時間。??
              • Spring Boot:Spring Boot通過自動配置數據源進行智能工作。它還可以處理啟動項目,從而無需編寫注釋,樣板代碼和XML配置,從而提高了工作效率并減少了開發人員的工作量。

               

              專門文章

              Spring Boot的Component Scan原理

              Spring Boot中的@EnableAutoConfiguration原理

              如何在Spring Boot中創建自己的啟動器?

              Spring Boot和Spring區別?

              spring-boot-starter-parent簡介

              Spring Initializr快速啟動Spring Boot應用!

              Spring Boot @ImportResource注釋示例

              ResponseEntity和ResponseBody以及ResponseStatus區別

              @RequestMapping與@GetMapping和@PostMapping等新注釋

              在spring-boot rest api中傳遞和驗證@RequestParam

              API文檔先行還是API編碼先行?

              使用Swagger和SpringFox文檔化Spring Boot REST API

              使用Spring Boot Security Starter加密REST服務

              Spring Boot Actuator簡介

              在Spring Boot中讀取application.properties

              Spring Boot和內存數據庫中H2的使用教程

              使用Spring Boot 2和Spring Data JPA實現審計

              SpringBoot過濾器

              在Spring Boot中使用流程引擎Activiti

              Spring Boot Admin 快速指南

              使用Activiti和Spring集成完成BPEL和BPM

              Spring Boot + Spring Data JPA + Oracle教程示例

              Spring Data JDBC教程

              Spring Boot應用實現Docker鏡像

              DDD實踐:在SpringBoot中跨微服務通過發件箱模式實現分布式事務機制 - Hans-Peter Grahsl

              Spring Boot實現DDD的貨運Cargo微服務案例源碼

              Spring Boot微服務中的十二因子方法論(12Factor) - Baeldung

              Spring事務管理:非常規指南 - marcobehler

               

              #Spring Boot

              相關專題

              Spring Cloud 微服務專題 Spring專題 Spring Batch批處理

              Spring Data JDBC教程

              美女漫画大全