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

有趣生活

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

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

發布時間:2025-11-25閱讀(3)

enable(SpringBoot中@Enablexxx注解詳解)

在使用springBoot集成其他三方框架的時候經常能看到@Enablexxx相關的注解。

它的作用就是開啟某項功能,比如@EnableScheduling開啟調度任務,

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

那他的實現原理是什么呢?

下面來實現一個自己的開關功能,比如@EnableLock,這是一個使能鎖的功能。

通過@EnableLock注解就能很清晰的理解@Enablexxx相關注解的實現原理。

實現功能配置類

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

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

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

這里相當于實現了鎖的功能,如果能夠把LockConfiguration配置類識別并導入Spring容器就實現了我們的目的。

實現@EnableLock注解

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

這里稍作解釋下:

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

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

@Documented就是一個文檔標識。

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

@Import(LockConfiguration.class)導入鎖配置類,相當于LockConfiguration.class

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

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

使用@EnableLock功能

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

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

測試結果:

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

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

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

@Enablexxx注解總結

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

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

TAGS標簽:  enable  springboot  Enablexxx  注解  詳解  ?enable(Sp

相關文章

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