中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-06-22 17:54:21 來源:億速云 閱讀:424 作者:Leah 欄目:編程語言

這篇文章給大家介紹Springboot中怎么加載自定義注解bean,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

使用場景:

  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);
        // 添加掃描規律規則,這里指定了內置的注解過濾規則
        provider.addIncludeFilter(new AnnotationTypeFilter(StateService.class));
        // 獲取掃描結果的全限定類名
        List<String> className = new ArrayList<>();
        // 掃描指定包,如果有多個包,這個過程可以執行多次
        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就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

景泰县| 巴林右旗| 玉溪市| 剑川县| 大宁县| 石渠县| 樟树市| 芦溪县| 淅川县| 鹰潭市| 林西县| 拜城县| 宣恩县| 东城区| 建水县| 富阳市| 苗栗县| 高青县| 旅游| 阳山县| 西乌珠穆沁旗| 和田县| 海安县| 普定县| 沙田区| 四平市| 开化县| 丹巴县| 黔东| 海淀区| 天镇县| 广德县| 荥经县| 金阳县| 巴楚县| 泾源县| 南岸区| 班玛县| 石阡县| 博乐市| 西充县|