第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

BeanNameAware 的用例

BeanNameAware 的用例

神不在的星期二 2023-07-19 15:52:30
BeanNameAware除了記錄 bean 本身的名稱之外,我無法弄清楚接口的任何用例。我做了我的研究,但我找不到一個人除了在 bean 初始化后打印 bean 名稱之外還寫過其他東西。它有任何實際用例嗎?
查看完整描述

1 回答

?
牛魔王的故事

TA貢獻1830條經(jīng)驗 獲得超3個贊

BeanNameAware可以在我們有多個類子類化抽象類并且想要知道這些特定 bean 的名稱以便使用它們的功能、如果 bean 名稱遵循某種模式時執(zhí)行某些操作、操作它們等的情況下使用。讓我們舉個例子明白它:


abstract class Parent implements BeanNameAware {


    String beanName;


    void setBeanName(String beanName) {

        this.beanName = beanName;

    }


    abstract void doFilter();


}


@Component

class Child1 extends Parent {

    @Override

    void doFilter() {

        // some impl 

    }

}


@Component

class Child2 extends Parent {

    @Override

    void doFilter() {

        // some impl 

    }

}

我們有一個服務方法,它獲取所有Parent類的實例并調(diào)用abstract void doFilter()方法實現(xiàn):


@Service

class SomeService{


    @Autowired

    Parent[] childs; // injecting all Child*


    void doSomethingWithChilds() {

        for(Parent child: childs) {

            child.doFilter(); // invoking their doFilter() impl

            String currentChildName = child.beanName;

            // We now know the name of current child* bean

            // We can use it for manipulating the child* instance

            // This is useful because each child instance will have a different bean name


            if(currentChildName.equals("child2")) {

                // do something special with child2

            }


        }

    }

}


查看完整回答
反對 回復 2023-07-19
  • 1 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號