91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

宁津县| 土默特左旗| 永定县| 游戏| 荆门市| 江孜县| 黑山县| 灌南县| 宿松县| 临朐县| 武山县| 宣武区| 墨玉县| 滨州市| 石景山区| 屯昌县| 顺昌县| 沙田区| 营山县| 北票市| 大悟县| 连平县| 科技| 顺昌县| 乐昌市| 策勒县| 甘德县| 如东县| 新巴尔虎左旗| 施秉县| 天水市| 通河县| 福安市| 合肥市| 衢州市| 克山县| 买车| 石泉县| 中方县| 瑞昌市| 徐水县|