這篇文章給大家介紹Springboot中怎么加載自定義注解bean,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)公司專注于滎經(jīng)網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供滎經(jīng)營銷型網(wǎng)站建設,滎經(jīng)網(wǎng)站制作、滎經(jīng)網(wǎng)頁設計、滎經(jīng)網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務,打造滎經(jīng)網(wǎng)絡公司原創(chuàng)品牌,更為您提供滎經(jīng)網(wǎng)站排名全網(wǎng)營銷落地服務。
使用場景:
添加中間件,配置某個注解的自定義掃描路徑,例如:dubbo的@Service@Refrence,Seata的@Refrence。
使用自定義注解,配置自定義注解的掃描路徑。
配置代碼:
/** * @author yuan * 加載指定包路徑下的自定義注解實例 */ public class StateImportSelector implements ImportSelector { @Override public String[] selectImports(AnnotationMetadata annotationMetadata) { // 不使用默認的TypeFilter ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false); // 添加掃描規(guī)律規(guī)則,這里指定了內置的注解過濾規(guī)則 provider.addIncludeFilter(new AnnotationTypeFilter(StateService.class)); // 獲取掃描結果的全限定類名 List<String> className = new ArrayList<>(); // 掃描指定包,如果有多個包,這個過程可以執(zhí)行多次 String[] packages = getPackageToScan(annotationMetadata); for (String aPackage : packages) { Set<BeanDefinition> beanDefinitionSet = provider.findCandidateComponents(aPackage); beanDefinitionSet.forEach(beanDefinition -> className.add(beanDefinition.getBeanClassName())); } String[] classNameArray = new String[className.size()]; return className.toArray(classNameArray); } private String[] getPackageToScan(AnnotationMetadata metadata) { //通過自定義注解獲取自定義包路徑 AnnotationAttributes attributes = AnnotationAttributes.fromMap( metadata.getAnnotationAttributes(EnabledStateMachine.class.getName())); String[] basePackages = attributes.getStringArray("basePackages"); if (basePackages.length != 0) { return basePackages; } return new String[]{ClassUtils.getPackageName(metadata.getClassName())}; } }
將StateImportSelector加入的注解中,以便自動注入
/** * @author yuan */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Documented @Import({StateImportSelector.class}) public @interface EnabledStateMachine { String[] basePackages() default {}; }
關于Springboot中怎么加載自定義注解bean就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
標題名稱:Springboot中怎么加載自定義注解bean
文章來源:http://jinyejixie.com/article24/ipicce.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、營銷型網(wǎng)站建設、用戶體驗、網(wǎng)站設計、網(wǎng)站改版、域名注冊
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)