W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
以下部分涵蓋了您在考慮使用或使用 Micronaut 時可能會問到的常見問題。
Micronaut 會修改我的字節(jié)碼嗎?
不,你的類就是你的類。Micronaut不會轉(zhuǎn)換類,也不會修改從你寫的代碼中生成的字節(jié)碼。Micronaut在編譯時產(chǎn)生額外的類,與你原來未修改的類在同一個包中。
為什么 Micronaut 不使用 Spring?
當(dāng)問到為什么 Micronaut 不使用 Spring 時,通常是指 Spring 依賴注入容器。
Spring 生態(tài)系統(tǒng)非常廣泛,您可以在 Micronaut 中直接使用許多 Spring 庫,而無需 Spring 容器。
Micronaut 具有自己的原生 JSR-330 兼容依賴注入的原因是 Spring(以及任何基于反射的 DI/AOP 容器)中這些功能的成本在內(nèi)存消耗和對啟動時間的影響方面太大了。為了在運行時支持依賴注入,Spring:
讀取它在運行時找到的每個 bean 的字節(jié)碼。
為每個 bean 方法、構(gòu)造函數(shù)、字段等上的每個注釋合成新注釋以支持注釋元數(shù)據(jù)。
為每個方法、構(gòu)造函數(shù)、字段等的每個 bean 構(gòu)建反射元數(shù)據(jù)。
結(jié)果是隨著您的應(yīng)用程序包含更多功能,啟動時間和內(nèi)存消耗逐漸減少。
對于啟動時間和內(nèi)存消耗保持低水平至關(guān)重要的微服務(wù)和無服務(wù)器功能,上述行為是使用 Spring 容器的不良現(xiàn)實,因此 Micronaut 的設(shè)計者選擇不使用 Spring。
Micronaut 支持 Scala 嗎?
Micronaut 支持任何支持注釋處理器 API 的 JVM 語言。 Scala 目前不支持這個 API。但是,Groovy 也不支持此 API,并且已經(jīng)構(gòu)建了處理 Groovy AST 的特殊支持。如果構(gòu)建類似于 inject-groovy 的模塊,將來在技術(shù)上可能會支持 Scala,但在撰寫本文時,Scala 尚不支持。
Micronaut 可以用于微服務(wù)以外的目的嗎?
是的。 Micronaut 是非常模塊化的,您可以通過在應(yīng)用程序中包含 micronaut-inject-java(或 micronaut-inject-groovy for Groovy)依賴項來選擇僅使用依賴注入和 AOP 實現(xiàn)。
事實上,Micronaut 對無服務(wù)器計算的支持正是使用了這種方法。
Micronaut 的 Dependency Injection 和 AOP 實現(xiàn)有什么優(yōu)勢?
Micronaut 在編譯時處理您的類并生成所有元數(shù)據(jù)。這消除了對反射、緩存反射元數(shù)據(jù)的需要,以及在運行時分析類的要求,所有這些都會導(dǎo)致啟動性能變慢和內(nèi)存消耗增加。
此外,Micronaut 在編譯時構(gòu)建無反射 AOP 代理,從而提高性能、減少堆棧跟蹤大小并減少內(nèi)存消耗。
為什么 Micronaut 有自己的 Consul 和 Eureka 客戶端實現(xiàn)?
現(xiàn)有的大多數(shù) Consul 和 Eureka 客戶端都是阻塞的,并且包含許多使 JAR 文件膨脹的外部依賴項。
Micronaut 的 DiscoveryClient 使用 Micronaut 的原生 HTTP 客戶端,大大減少了對外部依賴的需求,并在兩個發(fā)現(xiàn)服務(wù)器上提供了一個反應(yīng)式 API。
為什么我在加載 bean (Groovy) 時遇到 NoSuchMethodError?
Groovy 默認(rèn)導(dǎo)入 groovy.lang 包中的類,包括一個名為 @Singleton 的類,這是一個 AST 轉(zhuǎn)換類,它通過添加私有構(gòu)造函數(shù)和靜態(tài)檢索方法使您的類成為單例。這個注釋很容易與用于在 Micronaut 中定義單例 bean 的 javax.inject.Singleton 注釋混淆。確保在 Groovy 類中使??用正確的注解。
為什么啟動應(yīng)用程序花費的時間比應(yīng)有的時間長得多
Micronaut 的啟動時間通常非常快。但是,在應(yīng)用程序級別,可能會影響啟動時間。如果您看到啟動緩慢,請查看任何啟動緩慢的應(yīng)用程序啟動偵聽器或 @Context 范圍 bean。
一些網(wǎng)絡(luò)問題也可能導(dǎo)致啟動緩慢。例如,在 Mac 上,錯誤配置 /etc/hosts 文件可能會導(dǎo)致問題。請參閱以下 stackoverflow 答案。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: