久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當(dāng)前位置:首頁>生活>?enable(SpringBoot中@Enablexxx注解詳解)

?enable(SpringBoot中@Enablexxx注解詳解)

發(fā)布時間:2025-11-25閱讀(1)

enable(SpringBoot中@Enablexxx注解詳解)

在使用springBoot集成其他三方框架的時候經(jīng)常能看到@Enablexxx相關(guān)的注解。

它的作用就是開啟某項功能,比如@EnableScheduling開啟調(diào)度任務(wù),

@EnableDiscoveryClient開始nacos注冊中心的服務(wù)注冊功能,這些@Enablexxx注解隨處可見。

那他的實現(xiàn)原理是什么呢?

下面來實現(xiàn)一個自己的開關(guān)功能,比如@EnableLock,這是一個使能鎖的功能。

通過@EnableLock注解就能很清晰的理解@Enablexxx相關(guān)注解的實現(xiàn)原理。

實現(xiàn)功能配置類

@ConfigurationpublicclassLockConfiguration{ @BeanpublicLockServicelockService(){returnnewLockService(); } }publicclassLockService{publicvoidlock(){ System.out.println("locksomething"); }publicvoidunLock(){ System.out.println("unLocksomething"); } }

這里就是做一個簡單的演示,LockService類的作用就是加鎖和解鎖。

LockConfiguration就是一個配置類,把LockService對象注入Spring容器中。

這里相當(dāng)于實現(xiàn)了鎖的功能,如果能夠把LockConfiguration配置類識別并導(dǎo)入Spring容器就實現(xiàn)了我們的目的。

實現(xiàn)@EnableLock注解

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@Import(LockConfiguration.class) public@interfaceEnableLock{ }

這里稍作解釋下:

@Target(ElementType.TYPE)表示@EnableLock注解只能用在類上。

@Retention(RetentionPolicy.RUNTIME)表明注解作用在程序運行時。

@Documented就是一個文檔標(biāo)識。

@Inherited表示注解可被繼承,比如一個類Person被@EnableLock標(biāo)注了,那么Student類繼承Person,那么Student類相當(dāng)于也被標(biāo)注了@EnableLock注解。

@Import(LockConfiguration.class)導(dǎo)入鎖配置類,相當(dāng)于LockConfiguration.class

配置類和LockConfiguration.class中注入的bean對象都可以導(dǎo)入到Spring容器中。

如果對@Import注解的作用不是很明確,可以看我的另一篇文章Spring中@Import注解詳解,里面對@Import注解做了十分詳細(xì)的總結(jié)。

使用@EnableLock功能

@EnableLockpublicclassImportStudyApplication{publicstaticvoidmain(String[]args){ ApplicationContextac=newAnnotationConfigApplicationContext(ImportStudyApplication.class); LockServicelockService=(LockService)ac.getBean(LockService.class); lockService.lock(); lockService.unLock(); } }

在ImportStudyApplication類上標(biāo)注了@EnableLock相當(dāng)于打開了LockConfiguration配置,因此LockConfiguration配置類的注入的對象都能成功導(dǎo)入到Spring容器。

測試結(jié)果:

可以看到,LockService對象已經(jīng)可以成功從容器中獲取并使用,所有@EnableLock注解生效了。

下面來看一個不加@EnableLock的效果

看到了吧,如果不加@EnableLock,LockService對象是獲取不到的。

@Enablexxx注解總結(jié)

@Enablexxx注解的本質(zhì)就是結(jié)合@Import注解把已經(jīng)實現(xiàn)的功能打開,一般用在框架代碼中。如果您的公司內(nèi)部需要實現(xiàn)一個通用的框架或者功能,你就可以在實現(xiàn)后通過@Enablexxx注解結(jié)合@Import注解導(dǎo)入這個框架或功能的配置類,然后在需要使用的地方添加上@Enablexxx注解就可以了,使用起來非常方便且實用。

希望文章對您有用,你們的點贊、關(guān)注是作者持續(xù)輸出的動力源泉。

TAGS標(biāo)簽:  enable  springboot  Enablexxx  注解  詳解  ?enable(Sp

歡迎分享轉(zhuǎn)載→http://www.avcorse.com/read-889871.html

相關(guān)文章

    Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖