女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Spring Boot啟動 Eureka流程

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-10 11:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在上篇中已經說過了 Eureka-Server 本質上是一個 web 應用的項目,今天就來看看 Spring Boot 是怎么啟動 Eureka 的。

Spring Boot 啟動 Eureka 流程

@SpringBootApplication
@EnableEurekaServer
public class EurekaServer {
 public static void main(String[] args) {
  SpringApplication.run(EurekaServer.class, args);
 }
}

上面的代碼是最最平常的 Spring Boot 啟動類。Spring Boot 啟動 eureka 的關鍵注解就在 @EnableEurekaServer 上面。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({EurekaServerMarkerConfiguration.class})
public @interface EnableEurekaServer {
}

可以看到這注解導入了一個 EurekaServerMarkerConfiguration 類。

@Configuration
public class EurekaServerMarkerConfiguration {

 @Bean
 public Marker eurekaServerMarkerBean() {
  return new Marker();
 }

 class Marker {
 }
}

EurekaServerMarkerConfiguration 向 Spring 容器注入了一個 EurekaServerMarkerConfiguration.Marker 對象。Maker 是一個空對象,是一個標記開關的類。具體開關的類在上面的注釋中。

/**
 * Responsible for adding in a marker bean to activate
 * {@link EurekaServerAutoConfiguration}
 *
 * @author Biju Kunjummen
 */

EurekaServerMarkerConfiguration.Marker 對象用于激活 EurekaServerAutoConfiguration 類。

那 EurekaServerAutoConfiguration 類是在什么時候加載的呢?

圖片

org.springframework.boot.autoconfigure.EnableAutoConfiguration=
  org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration

如上圖,EurekaServerAutoConfiguration 啟動的調用是在 spring.factories 中的,在 Spring Boot 的啟動過程中,會加載所有的 spring.factories。這個時候會讀取并加載里面的內容到 Spring 中。

  • @Import(EurekaServerInitializerConfiguration.class):初始化 EurekaServerAutoConfiguration 的時候會導入 EurekaServerInitializerConfiguration 類。
  • @ConditionalOnBean(EurekaServerMarkerConfiguration.Marker.class):當 Spring 中有 EurekaServerMarkerConfiguration.Marker 類的實例存在就把 EurekaServerAutoConfiguration 也導入到 Spring 的容器中。
public class EurekaServerInitializerConfiguration
  implements ServletContextAware, SmartLifecycle, Ordered
  • ServletContextAware:實現這個類可以獲取到 ServletContext 容器上下文。
  • SmartLifecycle:當 Spring 容器加載所有 bean 并完成初始化之后,會接著回調實現該接口的類中對應的 start() 方法

看一下 start() 方法里面調用了什么?

@Override
public void start() {
 new Thread(new Runnable() {
  @Override
  public void run() {
   try {
    eurekaServerBootstrap.contextInitialized(EurekaServerInitializerConfiguration.this.servletContext);
    log.info("Started Eureka Server");

    publish(new EurekaRegistryAvailableEvent(getEurekaServerConfig()));
    EurekaServerInitializerConfiguration.this.running = true;
    publish(new EurekaServerStartedEvent(getEurekaServerConfig()));
   }
   catch (Exception ex) {
    // Help!
    log.error("Could not initialize Eureka servlet context", ex);
   }
  }
 }).start();
}

start() 啟動了一個線程,在線程里面 Start 了 Eureka Server。eurekaServerBootstrap 是一個自動注入 EurekaServerBootstrap 的對象。EurekaServerBootstrap 在上一篇中已經說過了,它是 Eureka Server 的啟動類。最后看看它的 contextInitialized() 方法。

public void contextInitialized(ServletContext context) {
 try {
  initEurekaEnvironment();
  initEurekaServerContext();

  context.setAttribute(EurekaServerContext.class.getName(), this.serverContext);
 }
 catch (Throwable e) {
  log.error("Cannot bootstrap eureka server :", e);
  throw new RuntimeException("Cannot bootstrap eureka server :", e);
 }
}

contextInitialized 方法調用了 initEurekaEnvironment(),初始化 Eureka 的運行環境;initEurekaServerContext(),初始化 Eureka 的上下文。

總結

Spring Boot 啟動 Erueka Server 經歷了一下步驟:

  1. @EnableEurekaServer 注解
  2. 注入了 EurekaServerMarkerConfiguration.Marker 對象
  3. 判斷容器里是否有 EurekaServerMarkerConfiguration.Marker 對象注入了 EurekaServerAutoConfiguration
  4. 導入了實現 SmartLifecycle 接口的 EurekaServerInitializerConfiguration 類
  5. Spring 容器在初始化后調用了 EurekaServerInitializerConfiguration 對象的 start() 方法
  6. start() 中啟動了一個線程,調用了 Erueka Server 的啟動類:EurekaServerBootstrap。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1287

    瀏覽量

    71398
  • 容器
    +關注

    關注

    0

    文章

    511

    瀏覽量

    22449
  • eureka
    +關注

    關注

    0

    文章

    4

    瀏覽量

    1813
  • SpringBoot
    +關注

    關注

    0

    文章

    175

    瀏覽量

    399
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    啟動Spring Boot項目應用的三種方法

    基礎。我們知道了Spring Boot是個什么了,那么我們又該如何啟動Spring Boot應用呢?這里小編給大家推薦常用的三種方法。分別是
    發表于 01-14 17:33

    Spring Boot嵌入式Web容器原理是什么

    同樣改變了一個傳統的Web應用服務的啟動流程和部署方式。通過自動配置機制,Spring Boot提供了一個
    發表于 12-16 07:57

    Spring Boot定時任務的重寫方法

    Spring Boot應該是目前最火的java開源框架了,它簡化了我們創建一個web服務的過程,讓我們可以在很短時間、基本零配置就可以啟動一個web服務。
    的頭像 發表于 01-20 17:38 ?2717次閱讀

    Spring Boot從零入門1 詳述

    在開始學習Spring Boot之前,我之前從未接觸過Spring相關的項目,Java基礎還是幾年前自學的,現在估計也忘得差不多了吧,寫Spring
    的頭像 發表于 12-10 22:18 ?854次閱讀

    Spring認證」什么是Spring GraphQL?

    這個項目建立在 Boot 2.x 上,但它應該與最新的 Boot2.4.x5 相關。 要創建項目,請轉到start.spring.io并為要使用的GraphQL傳輸選擇啟動器:
    的頭像 發表于 08-10 14:08 ?1032次閱讀
    「<b class='flag-5'>Spring</b>認證」什么是<b class='flag-5'>Spring</b> GraphQL?

    HAB boot啟動流程與實現步驟

    在《深扒HAB boot 啟動安全性》中,小編介紹了HAB boot啟動流程(如圖1所示),其中的1、2、3驗證步驟本質上就是驗簽過程。
    的頭像 發表于 08-12 09:39 ?1901次閱讀

    Spring Boot特有的實踐

    Spring Boot是最流行的用于開發微服務的Java框架。在本文中,我將與你分享自2016年以來我在專業開發中使用Spring Boot所采用的最佳實踐。這些內容是基于我的個人經驗
    的頭像 發表于 09-29 10:24 ?1169次閱讀

    強大的Spring Boot 3.0要來了

    來源:OSC開源社區(ID:oschina2013) Spring Boot 3.0 首個 RC 已發布,此外還為兩個分支發布了更新:2.7.5 2.6.13。 3.0.0-RC1: https
    的頭像 發表于 10-31 11:17 ?2335次閱讀

    Spring Boot Web相關的基礎知識

    上一篇文章我們已經學會了如何通過IDEA快速建立一個Spring Boot項目,還介紹了Spring Boot項目的結構,介紹了項目配置文件pom.xml的組成部分,并且撰寫了我們
    的頭像 發表于 03-17 15:03 ?887次閱讀

    Eureka Server面向接口的方式讀取配置文件

    eureka sersver 配置環境 在上一篇中已經介紹了,spring boot 是調用 類的 方法啟動 Eureka Server 的
    的頭像 發表于 10-09 17:05 ?827次閱讀
    <b class='flag-5'>Eureka</b> Server面向接口的方式讀取配置文件

    Spring Boot Actuator快速入門

    不知道大家在寫 Spring Boot 項目的過程中,使用過 Spring Boot Actuator 嗎?知道 Spring
    的頭像 發表于 10-09 17:11 ?902次閱讀

    Spring Boot啟動原理

    來指定依賴,才能夠運行。我們今天就來分析講解一下 Spring Boot啟動原理。 1. Spring Boot 打包插件
    的頭像 發表于 10-13 11:44 ?930次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的<b class='flag-5'>啟動</b>原理

    Spring Boot 的設計目標

    什么是Spring Boot Spring BootSpring 開源組織下的一個子項目,也是 S
    的頭像 發表于 10-13 14:56 ?795次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的設計目標

    安全啟動Secure Boot流程

    安全啟動-Secure Boot 除了NSPE和SPE兩個環境的溝通流程之外,secure boot也是Trusted Firmware很重要的設計環節。 Secure
    的頭像 發表于 11-02 16:45 ?2051次閱讀
    安全<b class='flag-5'>啟動</b>Secure <b class='flag-5'>Boot</b><b class='flag-5'>流程</b>

    springboot啟動流程

    。 Spring Boot啟動流程可以分為以下幾個步驟:初始化啟動環境、加載自動配置類、創建 Spr
    的頭像 發表于 11-22 16:04 ?903次閱讀