如何手動獲取 Spring 容器中的 Bean?
點擊上方?泥瓦匠 關(guān)注我!
老家浙江東海邊,靠海吃海,目前經(jīng)營一個小品牌,讓普通人吃到最新鮮的海鮮。有興趣可以點擊了解:《浙里有漁,鮮人一步!》???

ApplicationContextAware 接口的作用:
先來看下 Spring API 中對于?ApplicationContextAware?這個接口的描述:

即是說,當一個類實現(xiàn)了這個接口之后,這個類就可以方便地獲得 ApplicationContext 中的所有bean。
換句話說,就是這個類可以直接獲取Spring配置文件中,所有有引用到的bean對象。
如何使用 ApplicationContextAware 接口?
如何使用該接口?很簡單。
1、定義一個工具類,實現(xiàn) ApplicationContextAware,實現(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,進而使用其getBean方法來獲取我們需要的bean。Spring Aware容器感知技術(shù),這篇推薦看下。
2、在Spring配置文件中注冊該工具類
之所以我們能如此方便地使用該工具類來獲取,正是因為Spring能夠為我們自動地執(zhí)行 setApplicationContext 方法,顯然,這也是因為IOC的緣故,所以必然這個工具類也是需要在Spring的配置文件中進行配置的。
"springContextUtils"?class="com.zker.common.util.SpringContextUtils"?/>
3、編寫方法進行使用
一切就緒,我們就可以在需要使用的地方調(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("用戶名可以注冊");
????????????message.setStatus(true);
????????}
????????return?"register";
????}
作者:Dulk
來源:https://www.cnblogs.com/deng-cc/p/6373670.html

老家浙江東海邊,靠海吃海,目前經(jīng)營一個小品牌,讓普通人吃到最新鮮的海鮮。有興趣可以點擊了解:《浙里有漁,鮮人一步!》???
往期推薦
下方二維碼關(guān)注我

技術(shù)草根,堅持分享?編程,算法,架構(gòu)
