1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        手動(dòng)獲取 Spring 容器中的 Bean的 3 種方法

        共 1989字,需瀏覽 4分鐘

         ·

        2021-01-06 10:06


        點(diǎn)擊上方?藍(lán)字?關(guān)注我們!



        老家浙江東海邊,靠海吃海,目前經(jīng)營(yíng)一個(gè)小品牌,讓普通人吃到最新鮮的海鮮。有興趣可以點(diǎn)擊了解:《浙里有漁,鮮人一步!》???

        ApplicationContextAware 接口的作用:

        先來看下 Spring API 中對(duì)于?ApplicationContextAware?這個(gè)接口的描述:

        即是說,當(dāng)一個(gè)類實(shí)現(xiàn)了這個(gè)接口之后,這個(gè)類就可以方便地獲得 ApplicationContext 中的所有bean。

        換句話說,就是這個(gè)類可以直接獲取Spring配置文件中,所有有引用到的bean對(duì)象。

        如何使用 ApplicationContextAware 接口?

        如何使用該接口?很簡(jiǎn)單。

        1、定義一個(gè)工具類,實(shí)現(xiàn) ApplicationContextAware,實(shí)現(xiàn) setApplicationContext方法

        public?class?SpringContextUtils?implements?ApplicationContextAware?{?
        ????private?static?ApplicationContext?context;

        ????@Override
        ????public?void?setApplicationContext(ApplicationContext?context)
        ????????????throws?BeansException?{
        ????????SpringContextUtils.context?=?context;
        ????}

        ????public?static?ApplicationContext?getContext(){
        ????????return?context;
        ????}

        }

        如此一來,我們就可以通過該工具類,來獲得 ApplicationContext,進(jìn)而使用其getBean方法來獲取我們需要的bean。Spring Aware容器感知技術(shù),這篇推薦看下。

        2、在Spring配置文件中注冊(cè)該工具類

        之所以我們能如此方便地使用該工具類來獲取,正是因?yàn)镾pring能夠?yàn)槲覀冏詣?dòng)地執(zhí)行 setApplicationContext 方法,顯然,這也是因?yàn)镮OC的緣故,所以必然這個(gè)工具類也是需要在Spring的配置文件中進(jìn)行配置的。

        "springContextUtils"?class="com.zker.common.util.SpringContextUtils"?/>

        3、編寫方法進(jìn)行使用

        一切就緒,我們就可以在需要使用的地方調(diào)用該方法來獲取bean了。

        ????public?String?ajaxRegister()?throws?IOException?{
        ????????UserDao?userDao?=?(UserDao)SpringContextUtils.getContext().getBean("userDao");
        ????????if?(userDao.findAdminByLoginName(loginName)?!=?null
        ????????????????||?userDao.findUserByLoginName(loginName)?!=?null)?{
        ????????????message.setMsg("用戶名已存在");
        ????????????message.setStatus(false);
        ????????}?else?{
        ????????????message.setMsg("用戶名可以注冊(cè)");
        ????????????message.setStatus(true);
        ????????}

        ????????return?"register";
        ????}

        往期推薦

        Java中 for (;;) 與 while (true) 寫法上的本質(zhì)區(qū)別

        Spring Boot常用注解總結(jié) ,搞懂核心功能!

        緩存最終一致性,如何做到與業(yè)務(wù)完全解耦?

        MySQL引起 CPU 消耗過大,罪魁禍?zhǔn)拙尤皇撬?/p>


        老家浙江東海邊,靠海吃海,目前經(jīng)營(yíng)一個(gè)小品牌,讓普通人吃到最新鮮的海鮮。有興趣可以點(diǎn)擊了解:《浙里有漁,鮮人一步!》???


        END



        若覺得文章對(duì)你有幫助,隨手轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。


        長(zhǎng)按二維碼,掃掃關(guān)注哦

        ?「C語言中文網(wǎng)」官方公眾號(hào),關(guān)注手機(jī)閱讀教程??


        必備編程學(xué)習(xí)資料


        目前收集的資料包括:?Java,Python,C/C++,Linux,PHP,go,C#,QT,git/svn,人工智能,大數(shù)據(jù),單片機(jī),算法,小程序,易語言,安卓,ios,PPT,軟件教程,前端,軟件測(cè)試,簡(jiǎn)歷,畢業(yè)設(shè)計(jì),公開課?等分類,資源在不斷更新中...


        點(diǎn)擊“閱讀原文”,立即免費(fèi)領(lǐng)取最新資料!
        ???
        瀏覽 31
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产伦理久久久久久久久免费 | 免费黄网站| 欧美成人夜夜春宵 | 国产精品久热 | 青青草日逼视频 | www.wuma | 久热在线 | 男女无遮挡xx00动态图120秒 | 乱伦A片 无码免费毛片不卡视频视频 | 亚洲网站在线播放 |