成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Springboot中怎么加載自定義注解bean

這篇文章給大家介紹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)營銷落地服務。

使用場景:

  1. 添加中間件,配置某個注解的自定義掃描路徑,例如:dubbo的@Service@Refrence,Seata的@Refrence。

  2. 使用自定義注解,配置自定義注解的掃描路徑。

配置代碼:

/**
 * @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)

商城網(wǎng)站建設
偏关县| 泾阳县| 乐安县| 电白县| 汉中市| 鄢陵县| 揭东县| 梓潼县| 贵定县| 肥乡县| 静海县| 察雅县| 东源县| 封丘县| 黎城县| 简阳市| 繁昌县| 邻水| 泰和县| 繁昌县| 陆川县| 东港市| 新闻| 西丰县| 凭祥市| 贺兰县| 桐城市| 东源县| 门源| 都兰县| 容城县| 庆云县| 永丰县| 老河口市| 秦皇岛市| 南阳市| 盱眙县| 福州市| 桓仁| 盐源县| 宜宾县|