欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Spring Boot啟動(dòng) Eureka流程

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-10 11:40 ? 次閱讀

在上篇中已經(jīng)說(shuō)過(guò)了 Eureka-Server 本質(zhì)上是一個(gè) web 應(yīng)用的項(xiàng)目,今天就來(lái)看看 Spring Boot 是怎么啟動(dòng) Eureka 的。

Spring Boot 啟動(dòng) Eureka 流程

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

上面的代碼是最最平常的 Spring Boot 啟動(dòng)類(lèi)。Spring Boot 啟動(dòng) eureka 的關(guān)鍵注解就在 @EnableEurekaServer 上面。

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

可以看到這注解導(dǎo)入了一個(gè) EurekaServerMarkerConfiguration 類(lèi)。

@Configuration
public class EurekaServerMarkerConfiguration {

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

 class Marker {
 }
}

EurekaServerMarkerConfiguration 向 Spring 容器注入了一個(gè) EurekaServerMarkerConfiguration.Marker 對(duì)象。Maker 是一個(gè)空對(duì)象,是一個(gè)標(biāo)記開(kāi)關(guān)的類(lèi)。具體開(kāi)關(guān)的類(lèi)在上面的注釋中。

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

EurekaServerMarkerConfiguration.Marker 對(duì)象用于激活 EurekaServerAutoConfiguration 類(lèi)。

那 EurekaServerAutoConfiguration 類(lèi)是在什么時(shí)候加載的呢?

圖片

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

如上圖,EurekaServerAutoConfiguration 啟動(dòng)的調(diào)用是在 spring.factories 中的,在 Spring Boot 的啟動(dòng)過(guò)程中,會(huì)加載所有的 spring.factories。這個(gè)時(shí)候會(huì)讀取并加載里面的內(nèi)容到 Spring 中。

  • @Import(EurekaServerInitializerConfiguration.class):初始化 EurekaServerAutoConfiguration 的時(shí)候會(huì)導(dǎo)入 EurekaServerInitializerConfiguration 類(lèi)。
  • @ConditionalOnBean(EurekaServerMarkerConfiguration.Marker.class):當(dāng) Spring 中有 EurekaServerMarkerConfiguration.Marker 類(lèi)的實(shí)例存在就把 EurekaServerAutoConfiguration 也導(dǎo)入到 Spring 的容器中。
public class EurekaServerInitializerConfiguration
  implements ServletContextAware, SmartLifecycle, Ordered
  • ServletContextAware:實(shí)現(xiàn)這個(gè)類(lèi)可以獲取到 ServletContext 容器上下文。
  • SmartLifecycle:當(dāng) Spring 容器加載所有 bean 并完成初始化之后,會(huì)接著回調(diào)實(shí)現(xiàn)該接口的類(lèi)中對(duì)應(yīng)的 start() 方法

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

@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() 啟動(dòng)了一個(gè)線(xiàn)程,在線(xiàn)程里面 Start 了 Eureka Server。eurekaServerBootstrap 是一個(gè)自動(dòng)注入 EurekaServerBootstrap 的對(duì)象。EurekaServerBootstrap 在上一篇中已經(jīng)說(shuō)過(guò)了,它是 Eureka Server 的啟動(dòng)類(lèi)。最后看看它的 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 方法調(diào)用了 initEurekaEnvironment(),初始化 Eureka 的運(yùn)行環(huán)境;initEurekaServerContext(),初始化 Eureka 的上下文。

總結(jié)

Spring Boot 啟動(dòng) Erueka Server 經(jīng)歷了一下步驟:

  1. @EnableEurekaServer 注解
  2. 注入了 EurekaServerMarkerConfiguration.Marker 對(duì)象
  3. 判斷容器里是否有 EurekaServerMarkerConfiguration.Marker 對(duì)象注入了 EurekaServerAutoConfiguration
  4. 導(dǎo)入了實(shí)現(xiàn) SmartLifecycle 接口的 EurekaServerInitializerConfiguration 類(lèi)
  5. Spring 容器在初始化后調(diào)用了 EurekaServerInitializerConfiguration 對(duì)象的 start() 方法
  6. start() 中啟動(dòng)了一個(gè)線(xiàn)程,調(diào)用了 Erueka Server 的啟動(dòng)類(lèi):EurekaServerBootstrap。
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1271

    瀏覽量

    69746
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    499

    瀏覽量

    22128
  • eureka
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    1774
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    174

    瀏覽量

    201
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    啟動(dòng)Spring Boot項(xiàng)目應(yīng)用的三種方法

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

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

    同樣改變了一個(gè)傳統(tǒng)的Web應(yīng)用服務(wù)的啟動(dòng)流程和部署方式。通過(guò)自動(dòng)配置機(jī)制,Spring Boot提供了一個(gè)
    發(fā)表于 12-16 07:57

    Spring Boot定時(shí)任務(wù)的重寫(xiě)方法

    Spring Boot應(yīng)該是目前最火的java開(kāi)源框架了,它簡(jiǎn)化了我們創(chuàng)建一個(gè)web服務(wù)的過(guò)程,讓我們可以在很短時(shí)間、基本零配置就可以啟動(dòng)一個(gè)web服務(wù)。
    的頭像 發(fā)表于 01-20 17:38 ?2485次閱讀

    Spring Boot從零入門(mén)1 詳述

    在開(kāi)始學(xué)習(xí)Spring Boot之前,我之前從未接觸過(guò)Spring相關(guān)的項(xiàng)目,Java基礎(chǔ)還是幾年前自學(xué)的,現(xiàn)在估計(jì)也忘得差不多了吧,寫(xiě)Spring
    的頭像 發(fā)表于 12-10 22:18 ?675次閱讀

    Spring認(rèn)證」什么是Spring GraphQL?

    這個(gè)項(xiàng)目建立在 Boot 2.x 上,但它應(yīng)該與最新的 Boot2.4.x5 相關(guān)。 要?jiǎng)?chuàng)建項(xiàng)目,請(qǐng)轉(zhuǎn)到start.spring.io并為要使用的GraphQL傳輸選擇啟動(dòng)器:
    的頭像 發(fā)表于 08-10 14:08 ?868次閱讀
    「<b class='flag-5'>Spring</b>認(rèn)證」什么是<b class='flag-5'>Spring</b> GraphQL?

    HAB boot啟動(dòng)流程與實(shí)現(xiàn)步驟

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

    Spring Boot特有的實(shí)踐

    Spring Boot是最流行的用于開(kāi)發(fā)微服務(wù)的Java框架。在本文中,我將與你分享自2016年以來(lái)我在專(zhuān)業(yè)開(kāi)發(fā)中使用Spring Boot所采用的最佳實(shí)踐。這些內(nèi)容是基于我的個(gè)人經(jīng)驗(yàn)
    的頭像 發(fā)表于 09-29 10:24 ?961次閱讀

    強(qiáng)大的Spring Boot 3.0要來(lái)了

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

    Spring Boot Web相關(guān)的基礎(chǔ)知識(shí)

    上一篇文章我們已經(jīng)學(xué)會(huì)了如何通過(guò)IDEA快速建立一個(gè)Spring Boot項(xiàng)目,還介紹了Spring Boot項(xiàng)目的結(jié)構(gòu),介紹了項(xiàng)目配置文件pom.xml的組成部分,并且撰寫(xiě)了我們
    的頭像 發(fā)表于 03-17 15:03 ?697次閱讀

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

    eureka sersver 配置環(huán)境 在上一篇中已經(jīng)介紹了,spring boot 是調(diào)用 類(lèi)的 方法啟動(dòng) Eureka Server 的
    的頭像 發(fā)表于 10-09 17:05 ?614次閱讀
    <b class='flag-5'>Eureka</b> Server面向接口的方式讀取配置文件

    Spring Boot Actuator快速入門(mén)

    不知道大家在寫(xiě) Spring Boot 項(xiàng)目的過(guò)程中,使用過(guò) Spring Boot Actuator 嗎?知道 Spring
    的頭像 發(fā)表于 10-09 17:11 ?676次閱讀

    Spring Boot啟動(dòng)原理

    來(lái)指定依賴(lài),才能夠運(yùn)行。我們今天就來(lái)分析講解一下 Spring Boot啟動(dòng)原理。 1. Spring Boot 打包插件
    的頭像 發(fā)表于 10-13 11:44 ?696次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的<b class='flag-5'>啟動(dòng)</b>原理

    Spring Boot 的設(shè)計(jì)目標(biāo)

    什么是Spring Boot Spring BootSpring 開(kāi)源組織下的一個(gè)子項(xiàng)目,也是 S
    的頭像 發(fā)表于 10-13 14:56 ?619次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的設(shè)計(jì)目標(biāo)

    安全啟動(dòng)Secure Boot流程

    安全啟動(dòng)-Secure Boot 除了NSPE和SPE兩個(gè)環(huán)境的溝通流程之外,secure boot也是Trusted Firmware很重要的設(shè)計(jì)環(huán)節(jié)。 Secure
    的頭像 發(fā)表于 11-02 16:45 ?1498次閱讀
    安全<b class='flag-5'>啟動(dòng)</b>Secure <b class='flag-5'>Boot</b><b class='flag-5'>流程</b>

    springboot啟動(dòng)流程

    。 Spring Boot啟動(dòng)流程可以分為以下幾個(gè)步驟:初始化啟動(dòng)環(huán)境、加載自動(dòng)配置類(lèi)、創(chuàng)建 Spr
    的頭像 發(fā)表于 11-22 16:04 ?684次閱讀