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

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

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

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

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

不知道大家在寫(xiě) Spring Boot 項(xiàng)目的過(guò)程中,使用過(guò) Spring Boot Actuator 嗎?知道 Spring Boot Actuator 是什么,干什么的嗎?今天就要來(lái)給大家介紹一下 Spring Boot Actuator,學(xué)習(xí)如何在 Spring Boot 2.x 中使用、配置和擴(kuò)展這個(gè)監(jiān)控工具。Spring Boot 1.x 的使用就不再這邊介紹了。相信大家平時(shí)使用的框架基本上都要升級(jí)到 2.x了吧。

什么是 Actuator ?

從本質(zhì)上講,Spring Boot Actuator 為我們的應(yīng)用程序帶來(lái)了生產(chǎn)就緒的功能。監(jiān)控我們的應(yīng)用程序,收集指標(biāo),了解流量,或者是數(shù)據(jù)庫(kù)的狀態(tài)。有了它,我們就可以很簡(jiǎn)單的監(jiān)控應(yīng)用程序的各種指標(biāo)數(shù)據(jù)。

Spring Boot Actuator 使用 http 或者 JMX 的方式來(lái)公開(kāi)運(yùn)行中的應(yīng)用程序的操作信息--健康、指標(biāo)、信息、轉(zhuǎn)儲(chǔ)、環(huán)境等,我們能夠方便的與它互動(dòng)。只要添加Spring Boot Actuator 依賴到 classpath 中,就有幾個(gè)指標(biāo)路徑可供我們開(kāi)箱使用。與大多數(shù) Spring boot 模塊一樣,我們可以很容易地以多種方式配置或擴(kuò)展它。

快速入門(mén)

要想啟用 Spring Boot Actuator,我們只需在軟件包管理器中添加 spring-boot-starter-actuator 依賴項(xiàng)。在 pom.xml 文件添加如下代碼即可:

< dependency >
    < groupId >org.springframework.boot< /groupId >
    < artifactId >spring-boot-starter-actuator< /artifactId >
< /dependency >

是吧,很簡(jiǎn)單就添加好了。有的小朋友可能會(huì)有疑問(wèn)了,為什么沒(méi)有添加 version 節(jié)點(diǎn)呢?那是因?yàn)?Spring Bootparent pom 會(huì)制定版本號(hào),所以這里無(wú)需再次指定了。

Spring Boot 2.x Actuator

2.x 版本中,Spring Boot Actuator 保持了 1.x 的基本操作,但簡(jiǎn)化了它的模型,擴(kuò)展了它的能力,并加入了更好的默認(rèn)值。這個(gè)版本變得與技術(shù)無(wú)關(guān)。它還簡(jiǎn)化了其安全模型,將其與應(yīng)用程序模型合并。最新版本現(xiàn)在支持CRUD模型,而不是舊的讀寫(xiě)模型。

技術(shù)支持

2.x 中,Spring Boot Actuator 將其模型定義為可插拔和可擴(kuò)展的,而不依賴于 MVC。通過(guò)這個(gè)新的模型,我們能夠利用 MVC 以及 WebFlux 作為底層 Web 技術(shù)的優(yōu)勢(shì)。此外,可以通過(guò)實(shí)現(xiàn)正確的適配器來(lái)添加即將到來(lái)的技術(shù)。不過(guò) JMX 仍然被支持,無(wú)需任何額外的代碼就可以暴露路徑。

重要變化

與以前的版本不同,Spring Boot Actuator 的大多數(shù)路徑都是禁用的。默認(rèn)情況下,只有 /health/info 兩個(gè)可用。如果我們想啟用所有的路徑,可以設(shè)置 management.endpoints.web.exposure.include=* 來(lái)實(shí)現(xiàn)。Actuator 現(xiàn)在與常規(guī)的 App 安全規(guī)則共享安全配置,所以安全模型被大大簡(jiǎn)化。要調(diào)整 Actuator 的安全規(guī)則,我們可以只添加一個(gè) /actuator/** 的條目。

@Bean
public SecurityWebFilterChain securityWebFilterChain(
  ServerHttpSecurity http) {
    return http.authorizeExchange()
      .pathMatchers("/actuator/**").permitAll()
      .anyExchange().authenticated()
      .and().build();
}

我們可以在全新的 Actuator 官方文檔中找到進(jìn)一步的細(xì)節(jié)。另外,在默認(rèn)情況下,所有的 Actuator 路徑現(xiàn)在都被放在 /actuator 路徑下。和以前的版本一樣,我們可以使用新的屬性management.endpoints.web.base-path 來(lái)調(diào)整這個(gè)路徑。

預(yù)定義的路徑

讓我們看看一些可用的路徑,其中大部分在1.x中已經(jīng)可用。另外,有些路徑被添加了,有些被刪除了,有些被重組了。

  • /auditevents 列出了安全審計(jì)相關(guān)的事件,如用戶登錄/注銷。此外,我們還可以通過(guò)本金或類型以及其他字段進(jìn)行過(guò)濾。
  • /beans 返回我們BeanFactory中所有可用的bean。與/auditevents不同,它不支持過(guò)濾。
  • /conditions,以前被稱為/autoconfig,圍繞自動(dòng)配置建立一個(gè)條件報(bào)告。
  • /configprops 允許我們獲取所有@ConfigurationProperties。
  • /env 返回當(dāng)前的環(huán)境屬性。此外,我們還可以檢索單個(gè)屬性。
  • /flyway 提供了關(guān)于我們Flyway數(shù)據(jù)庫(kù)遷移的細(xì)節(jié)。
  • /health 總結(jié)了我們應(yīng)用程序的健康狀態(tài)。
  • /heapdump 構(gòu)建并返回我們應(yīng)用程序使用的 JVM 的堆存儲(chǔ)。
  • /info 返回一般信息。它可能是自定義數(shù)據(jù)、構(gòu)建信息或關(guān)于最新提交的細(xì)節(jié)。
  • /liquibase 的行為類似于/flyway,但針對(duì)Liquibase。
  • /logfile 返回普通的應(yīng)用程序日志。
  • /loggers 使我們能夠查詢和修改我們應(yīng)用程序的日志級(jí)別。
  • /metrics 詳細(xì)說(shuō)明我們應(yīng)用程序的指標(biāo)。這可能包括通用指標(biāo)和自定義指標(biāo)。
  • /prometheus 返回與前面一樣的指標(biāo),但格式化為與Prometheus服務(wù)器一起工作。
  • /scheduledtasks 提供了關(guān)于我們應(yīng)用程序中每個(gè)計(jì)劃任務(wù)的細(xì)節(jié)。
  • /sessions 列出HTTP會(huì)話,因?yàn)槲覀兪褂玫氖荢pring Session。
  • /shutdown 執(zhí)行應(yīng)用程序的優(yōu)雅關(guān)閉。
  • /threaddump 轉(zhuǎn)儲(chǔ)底層JVM的線程信息。

執(zhí)行器路徑的超媒體

Spring Boot 增加了一個(gè)所有路徑的集合入口,可以返回所有可用的執(zhí)行器路徑的鏈接。這將有助于發(fā)現(xiàn)執(zhí)行器路徑及其相應(yīng)的URL。默認(rèn)情況下,這個(gè)集合入口可以通過(guò) /actuator 路徑訪問(wèn)。因此,如果我們向這個(gè)URL發(fā)送一個(gè)GET請(qǐng)求,它將返回各種路徑的執(zhí)行器鏈接。

{
  "_links": {
    "self": {
      "href": "http://localhost:8080/actuator",
      "templated": false
    },
    "features-arg0": {
      "href": "http://localhost:8080/actuator/features/{arg0}",
      "templated": true
    },
    "features": {
      "href": "http://localhost:8080/actuator/features",
      "templated": false
    },
    "beans": {
      "href": "http://localhost:8080/actuator/beans",
      "templated": false
    },
    "caches-cache": {
      "href": "http://localhost:8080/actuator/caches/{cache}",
      "templated": true
    },
    // ...
}

如上所示,/actuator 路徑在 _links 字段下報(bào)告所有可用的執(zhí)行器路徑。如果我們配置了一個(gè)自定義的管理基礎(chǔ)路徑,那么我們應(yīng)該能使用該集合入口發(fā)現(xiàn)URL。例如,如果我們將management.endpoints.web.base-path 設(shè)置為 /mgmt ,那么我們應(yīng)該向 /mgmt 路徑發(fā)送請(qǐng)求,以查看鏈接列表。但是如果當(dāng)管理集合入口被設(shè)置為 / 時(shí),集合入口被禁用,以防止與其他映射發(fā)生沖突的可能性。

健康指示器

就像以前的版本一樣,我們可以很容易地添加自定義指標(biāo)。與其他 API 相反,用于創(chuàng)建自定義健康路徑的抽象概念保持不變。然而,一個(gè)新的接口,即 ReactiveHealthIndicator,已經(jīng)被添加到實(shí)現(xiàn)反應(yīng)式健康檢查。讓我們來(lái)看看一個(gè)簡(jiǎn)單的自定義反應(yīng)式健康檢查。

@Component
public class DownstreamServiceHealthIndicator implements ReactiveHealthIndicator {
    @Override
    public Mono< Health > health() {
        return checkDownstreamServiceHealth().onErrorResume(
          ex - > Mono.just(new Health.Builder().down(ex).build())
        );
    }
    private Mono< Health > checkDownstreamServiceHealth() {
        return Mono.just(new Health.Builder().up().build());
    }
}

健康指標(biāo)的一個(gè)方便的特點(diǎn)是,我們可以把它們作為一個(gè)層次結(jié)構(gòu)的一部分進(jìn)行匯總。因此,按照前面的例子,我們可以把所有的下游服務(wù)歸入一個(gè)下游服務(wù)類別。只要每個(gè)嵌套的服務(wù)都是可以到達(dá)的,這個(gè)類別就會(huì)是健康的。

健康組

Spring Boot 2.2 開(kāi)始,我們可以將健康指標(biāo)組織成組,并對(duì)所有組員應(yīng)用相同的配置。例如,我們可以通過(guò)在 application.properties 中添加以下內(nèi)容來(lái)創(chuàng)建一個(gè)名為 custom 的健康組。

management.endpoint.health.group.custom.include=diskSpace,ping

這樣,自定義組包含 diskSpaceping 健康指標(biāo)?,F(xiàn)在,如果我們調(diào)用 /actuator/health 路徑,它將在 JSON 響應(yīng)中告訴我們關(guān)于新的健康組。

{"status":"UP","groups":["custom"]}

通過(guò)健康組,我們可以看到一些健康指標(biāo)的匯總結(jié)果。在這種情況下,如果我們向 /actuator/health/custom 發(fā)送一個(gè)請(qǐng)求,

{"status": "UP"}

我們可以通過(guò) application.properties 來(lái)配置該組,以顯示更多細(xì)節(jié)。

management.endpoint.health.group.custom.show-components=always
management.endpoint.health.group.custom.show-details=always

現(xiàn)在,如果我們向 /actuator/health/custom 發(fā)送同樣的請(qǐng)求,我們會(huì)看到更多的細(xì)節(jié)。

{
  "status": "UP",
  "components": {
    "diskSpace": {
      "status": "UP",
      "details": {
        "total": 499963170816,
        "free": 91300069376,
        "threshold": 10485760
      }
    },
    "ping": {
      "status": "UP"
    }
  }
}

也可以只為授權(quán)用戶顯示這些細(xì)節(jié)。

management.endpoint.health.group.custom.show-components=when_authorized
management.endpoint.health.group.custom.show-details=when_authorized

我們還可以有一個(gè)自定義的狀態(tài)映射。例如,它可以不返回 HTTP 200 OK 響應(yīng),而是返回 207 狀態(tài)代碼。

management.endpoint.health.group.custom.status.http-mapping.up=207

在這里,我們要告訴 Spring Boot,如果自定義組的狀態(tài)是 UP,就返回 207 的 HTTP 狀態(tài)代碼。

Spring Boot 2中的度量

Spring Boot 2.0 中,內(nèi)部指標(biāo)被 Micrometer 支持所取代,因此我們可以預(yù)期會(huì)有一些變化。如果我們的應(yīng)用程序正在使用 GaugeService 或 CounterService 等度量衡服務(wù),它們將不再可用。

相反,我們要與 Micrometer 直接互動(dòng)。在 Spring Boot 2.0 中,我們會(huì)得到一個(gè)自動(dòng)配置的 MeterRegistry 類型的 bean。此外,Micrometer 現(xiàn)在是 Actuator 依賴的一部分,所以只要 Actuator 的依賴在 classpath 中,我們就應(yīng)該可以使用了。此外,我們將從 /metrics 端點(diǎn)得到一個(gè)全新的響應(yīng)。

{
  "names": [
    "jvm.gc.pause",
    "jvm.buffer.memory.used",
    "jvm.memory.used",
    "jvm.buffer.count",
    // ...
  ]
}

正如我們所看到的,沒(méi)有像我們?cè)?.x中得到的實(shí)際度量。為了得到一個(gè)特定指標(biāo)的實(shí)際值,我們現(xiàn)在可以導(dǎo)航到所需的指標(biāo),例如,/actuator/metrics/jvm.gc.pause,然后得到一個(gè)詳細(xì)的響應(yīng)。

{
  "name": "jvm.gc.pause",
  "measurements": [
    {
      "statistic": "Count",
      "value": 3.0
    },
    {
      "statistic": "TotalTime",
      "value": 7.9E7
    },
    {
      "statistic": "Max",
      "value": 7.9E7
    }
  ],
  "availableTags": [
    {
      "tag": "cause",
      "values": [
        "Metadata GC Threshold",
        "Allocation Failure"
      ]
    },
    {
      "tag": "action",
      "values": [
        "end of minor GC",
        "end of major GC"
      ]
    }
  ]
}

現(xiàn)在的度量標(biāo)準(zhǔn)要徹底得多,不僅包括不同的值,還包括一些相關(guān)的元數(shù)據(jù)。

創(chuàng)建一個(gè)自定義路徑

正如我們之前指出的,我們可以創(chuàng)建自定義路徑。不過(guò),Spring Boot 2重新設(shè)計(jì)了實(shí)現(xiàn)的方式,以支持新的技術(shù)無(wú)關(guān)的范式。讓我們創(chuàng)建一個(gè)Actuator路徑,在我們的應(yīng)用程序中查詢、啟用和禁用功能標(biāo)志。

@Component
@Endpoint(id = "features")
public class FeaturesEndpoint {
    private Map< String, Feature > features = new ConcurrentHashMap<  >();
    @ReadOperation
    public Map< String, Feature > features() {
        return features;
    }
    @ReadOperation
    public Feature feature(@Selector String name) {
        return features.get(name);
    }
    @WriteOperation
    public void configureFeature(@Selector String name, Feature feature) {
        features.put(name, feature);
    }
    @DeleteOperation
    public void deleteFeature(@Selector String name) {
        features.remove(name);
    }
    public static class Feature {
        private Boolean enabled;
        // [...] getters and setters 
    }
}

為了獲得路徑,我們需要一個(gè)Bean。在我們的例子中,我們使用@Component來(lái)做這個(gè)。同時(shí),我們需要用@Endpoint來(lái)裝飾這個(gè)Bean。我們的端點(diǎn)的路徑是由@Endpoint的id參數(shù)決定的。在我們的例子中,它將把請(qǐng)求路由到/actuator/features。一旦準(zhǔn)備就緒,我們就可以開(kāi)始使用定義操作了。

  • @ReadOperation。它將映射到HTTP GET。
  • @WriteOperation。它將映射到HTTP POST。
  • @DeleteOperation。它將映射到HTTP DELETE。

當(dāng)我們?cè)趹?yīng)用程序中使用前一個(gè)端點(diǎn)運(yùn)行應(yīng)用程序時(shí),Spring Boot將注冊(cè)它。驗(yàn)證這一點(diǎn)的一個(gè)快速方法是檢查日志。

擴(kuò)展現(xiàn)有的端點(diǎn)

想象一下,如果我們想確保應(yīng)用程序的生產(chǎn)實(shí)例永遠(yuǎn)不是SNAPSHOT版本。我們決定通過(guò)改變返回該信息的 Actuator 端點(diǎn)的HTTP狀態(tài)代碼,即/info來(lái)做到這一點(diǎn)。如果我們的應(yīng)用程序碰巧是SNAPSHOT,我們會(huì)得到一個(gè)不同的HTTP狀態(tài)代碼。

我們可以使用 @EndpointExtension 注解,或其更具體的特殊化@EndpointWebExtension或@EndpointJmxExtension,輕松地?cái)U(kuò)展預(yù)定義端點(diǎn)的行為。

@Component
@EndpointWebExtension(endpoint = InfoEndpoint.class)
public class InfoWebEndpointExtension {
    private InfoEndpoint delegate;
    @ReadOperation
    public WebEndpointResponse< Map > info() {
        Map< String, Object > info = this.delegate.info();
        Integer status = getStatus(info);
        return new WebEndpointResponse<  >(info, status);
    }
    private Integer getStatus(Map< String, Object > info) {
        return 200;
    }
}

啟用所有端點(diǎn)

為了能夠使用 HTTP 訪問(wèn) Actuator 的端點(diǎn),我們需要啟用和公開(kāi)它們。默認(rèn)情況下,除了/shutdown,所有的端點(diǎn)都是啟用的。默認(rèn)情況下,只有/health和/info這兩個(gè)端點(diǎn)是公開(kāi)的。我們需要添加以下配置來(lái)公開(kāi)所有端點(diǎn)。

management.endpoints.web.exposure.include=*

要明確地啟用一個(gè)特定的端點(diǎn)(例如,/shutdown)

management.endpoint.shutdown.enabled=true

要公開(kāi)所有已啟用的端點(diǎn),除了一個(gè)(例如,/loggers)

management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=loggers

總結(jié)

在這篇文章中,我們談到了Spring Boot Actuator。我們首先解釋了Actuator的含義以及它為我們做了什么。接下來(lái),我們重點(diǎn)討論了當(dāng)前Spring Boot 2.x版本的Actuator,討論了如何使用它、調(diào)整它和擴(kuò)展它。我們還談到了在這個(gè)新的迭代中我們可以發(fā)現(xiàn)的重要的安全變化。我們討論了一些流行的端點(diǎn),以及它們是如何變化的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4694

    瀏覽量

    68075
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3221

    瀏覽量

    57499
  • 軟件包
    +關(guān)注

    關(guān)注

    0

    文章

    99

    瀏覽量

    11552
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    153
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Spring Boot中Docker的入門(mén)指南(一)

    許多人使用容器來(lái)包裝他們的 Spring Boot 應(yīng)用程序,而構(gòu)建容器并不是一件簡(jiǎn)單的事情。這是針對(duì) Spring Boot 應(yīng)用程序開(kāi)發(fā)人員的指南,容器對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)并不總是一個(gè)
    的頭像 發(fā)表于 06-28 15:54 ?2617次閱讀

    Spring Boot如何實(shí)現(xiàn)異步任務(wù)

    Spring Boot 提供了多種方式來(lái)實(shí)現(xiàn)異步任務(wù),這里介紹三種主要實(shí)現(xiàn)方式。 1、基于注解 @Async @Async 注解是 Spring 提供的一種輕量級(jí)異步方法實(shí)現(xiàn)方式,它可以標(biāo)記在方法上
    的頭像 發(fā)表于 09-30 10:32 ?1315次閱讀

    Spring Boot Starter需要些什么

    pulsar-spring-boot-starter是非常有必要的,在此之前,我們先看看一個(gè)starter需要些什么。 Spring Boot Starter spring-boot
    的頭像 發(fā)表于 09-25 11:35 ?687次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> Starter需要些什么

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

    的文件。那么我們可以直接用java命令啟動(dòng):java -jar girl-0.0.1-SNAPSHOT.jar。最后說(shuō)下使用spring boot的好處呢?spring boot帶給我
    發(fā)表于 01-14 17:33

    spring快速入門(mén)教程

    Spring 快速入門(mén)教程──開(kāi)發(fā)你的第一個(gè)Spring程序本章學(xué)習(xí)用struts MVC框架作前端,Spring做中間層,Hibernat
    發(fā)表于 09-11 11:07 ?34次下載
    <b class='flag-5'>spring</b><b class='flag-5'>快速</b><b class='flag-5'>入門(mén)</b>教程

    spring boot入門(mén)

    運(yùn)行應(yīng)用:mvn spring-boot:run或在IDE中運(yùn)行main()方法,在瀏覽器中訪問(wèn)http://localhost:8080,Hello World!就出現(xiàn)在了頁(yè)面中。只用了區(qū)區(qū)十幾行Java代碼,一個(gè)Hello World應(yīng)用就可以正確運(yùn)行了,那么這段代碼究竟做了什么呢?
    發(fā)表于 11-25 09:57 ?2690次閱讀

    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 ?573次閱讀

    Spring Boot特有的實(shí)踐

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

    強(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 ?1557次閱讀

    怎樣使用Kiuwan保護(hù)Spring Boot應(yīng)用程序呢?

    Spring Boot 提供了快速輕松地構(gòu)建基于Spring 的應(yīng)用程序所需的工具、功能和依賴項(xiàng)。
    的頭像 發(fā)表于 03-16 09:10 ?726次閱讀

    如何通過(guò)IDEA快速建立一個(gè)Spring Boot項(xiàng)目

    在說(shuō)Spring Boot之前先要了解Spring,那么Spring是什么呢?Spring 框架是一個(gè)分層的、面向切面的Java應(yīng)用程序的一
    的頭像 發(fā)表于 03-17 15:00 ?1134次閱讀
    如何通過(guò)IDEA<b class='flag-5'>快速</b>建立一個(gè)<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>項(xiàng)目

    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)目配置文件
    的頭像 發(fā)表于 03-17 15:03 ?592次閱讀

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

    在上篇中已經(jīng)說(shuō)過(guò)了 Eureka-Server 本質(zhì)上是一個(gè) web 應(yīng)用的項(xiàng)目,今天就來(lái)看看 Spring Boot 是怎么啟動(dòng) Eureka 的。 Spring Boot 啟動(dòng) E
    的頭像 發(fā)表于 10-10 11:40 ?785次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>啟動(dòng) Eureka流程

    Spring Boot的啟動(dòng)原理

    可能很多初學(xué)者會(huì)比較困惑,Spring Boot 是如何做到將應(yīng)用代碼和所有的依賴打包成一個(gè)獨(dú)立的 Jar 包,因?yàn)閭鹘y(tǒng)的 Java 項(xiàng)目打包成 Jar 包之后,需要通過(guò) -classpath 屬性
    的頭像 發(fā)表于 10-13 11:44 ?581次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動(dòng)原理

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

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