W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
說(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í)情況并非如此。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: