Micronaut 是如何工作的

2023-02-25 14:16 更新

說(shuō)到這里,你可能想知道 Micronaut 是如何在不需要反射的情況下進(jìn)行上述依賴注入的。

關(guān)鍵是一組 AST 轉(zhuǎn)換(對(duì)于 Groovy)和注釋處理器(對(duì)于 Java),它們生成實(shí)現(xiàn) BeanDefinition 接口的類。

Micronaut 使用 ASM 字節(jié)碼庫(kù)生成類,并且由于 Micronaut 提前知道注入點(diǎn),因此不需要像 Spring 等其他框架那樣在運(yùn)行時(shí)掃描所有的方法、字段、構(gòu)造函數(shù)等。

此外,由于在構(gòu)造 bean 時(shí)不使用反射,JVM 可以更好地內(nèi)聯(lián)和優(yōu)化代碼,從而提高運(yùn)行時(shí)性能并減少內(nèi)存消耗。這對(duì)于應(yīng)用程序性能取決于 bean 創(chuàng)建性能的非單例范圍尤其重要。

此外,使用 Micronaut,您的應(yīng)用程序啟動(dòng)時(shí)間和內(nèi)存消耗不會(huì)像使用反射的框架那樣受到代碼庫(kù)大小的影響?;诜瓷涞?nbsp;IoC 框架為代碼中的每個(gè)字段、方法和構(gòu)造函數(shù)加載和緩存反射數(shù)據(jù)。因此,隨著代碼大小的增加,內(nèi)存需求也會(huì)增加,而使用 Micronaut 時(shí)情況并非如此。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)