標籤:lan exce rda 定義 對象 getbean public print china
ApplicationContextAware 介面的作用先來看下Spring API 中對於 ApplicationContextAware 這個介面的描述:
即是說,當一個類實現了這個介面之後,這個類就可以方便地獲得 ApplicationContext 中的所有bean。換句話說,就是這個類可以直接擷取Spring設定檔中,所有有引用到的bean對象。
如何使用 ApplicationContextAware 介面如何使用該介面?很簡單。
1、定義一個工具類,實現 ApplicationContextAware,實現 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。
2、在Spring設定檔中註冊該工具類之所以我們能如此方便地使用該工具類來擷取,正是因為Spring能夠為我們自動地執行 setApplicationContext 方法,顯然,這也是因為IOC的緣故,所以必然這個工具類也是需要在Spring的設定檔中進行配置的。
<!--Spring中bean擷取的工具類-->
<bean id="springContextUtils" class="com.zker.common.util.SpringContextUtils" />
3、編寫方法進行使用一切就緒,我們就可以在需要使用的地方調用該方法來擷取bean了。
/**
* 利用Ajax實現註冊的使用者名稱重複性校正
* @return
*/
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";
}
源碼參考Github地址 --> github.com/deng-cc/KeepLearning/commits/mastercommit id --> 50f9bd3163aeb126fca4d2e2cf599c6637796d1a
參考連結
- Spring ApplicationContextAware擷取上下文
- spring中ApplicationContextAware介面使用理解
- 手動擷取通過spring mvc注入的bean
- Spring - 運行時擷取bean(ApplicationContextAware介面)
null
如何手動擷取Spring容器中的bean(ApplicationContextAware 介面)