關於在基於spring的框架中使用static 方法的問題
一般使用spring做框架設計的web 應用中,都是利用Webapplicationcontext這個類做為beanFactory的。而這個類是在啟動時載入的。
在應用中可能會有一些helper,或則util類,需要提供靜態方法來獲取資料,不如DeptHelper.treeListDept()。如果該類要從一個DAO裡取資料,那麼它該如何訪問ioc的beanFactory,以獲取這個DAO物件呢?
大家知道WebApplicationContext一般是透過WebApplicationContextUtils
.getRequiredWebApplicationContext(config.getServletContext());來獲取的。但是如果我們的DeptHelper.treeListDept()不能獲取一個HttpServletRequest或則ServletContext,該怎麼辦呢?
我想了個辦法,就是寫一個靜態類
ApplicationContextKeeper ,如下:
private static ApplicationContext appCtx = null;
public static ApplicationContext getAppCtx() {
return appCtx;
}
public static void init(ApplicationContext ctxVal) {
appCtx = ctxVal;
}
這個類在系統啟動時由一個servlet來初始化(就是呼叫它的init),例如:
public class ApplicationContextLoadServ extends BaseServ {
public void init(ServletConfig servletConfig) throws ServletException {
ApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(servletConfig.getServletContext());
ApplicationContextKeeper.init(ctx);
}
public void destroy() {
super.destroy();
}
}
該servlet的啟動順序是在spring的ContextLoaderServlet之後的,這樣就保證獲取了ApplicationContext。
這樣的話我的
DeptHelper.treeListDept()就可以這樣寫了
{
IDeptInfoDAO deptInfoDAO = (IDeptInfoDAO)ApplicationContextKeeper.getAppCtx().getBean("deptInfoDAO");
deptInfoDAO.listDeptData.....
}
當然我是初次應用,想來也不會有什麼問題。大家可以討論討論
在應用中可能會有一些helper,或則util類,需要提供靜態方法來獲取資料,不如DeptHelper.treeListDept()。如果該類要從一個DAO裡取資料,那麼它該如何訪問ioc的beanFactory,以獲取這個DAO物件呢?
大家知道WebApplicationContext一般是透過WebApplicationContextUtils
.getRequiredWebApplicationContext(config.getServletContext());來獲取的。但是如果我們的DeptHelper.treeListDept()不能獲取一個HttpServletRequest或則ServletContext,該怎麼辦呢?
我想了個辦法,就是寫一個靜態類
ApplicationContextKeeper ,如下:
private static ApplicationContext appCtx = null;
public static ApplicationContext getAppCtx() {
return appCtx;
}
public static void init(ApplicationContext ctxVal) {
appCtx = ctxVal;
}
這個類在系統啟動時由一個servlet來初始化(就是呼叫它的init),例如:
public class ApplicationContextLoadServ extends BaseServ {
public void init(ServletConfig servletConfig) throws ServletException {
ApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(servletConfig.getServletContext());
ApplicationContextKeeper.init(ctx);
}
public void destroy() {
super.destroy();
}
}
該servlet的啟動順序是在spring的ContextLoaderServlet之後的,這樣就保證獲取了ApplicationContext。
這樣的話我的
DeptHelper.treeListDept()就可以這樣寫了
{
IDeptInfoDAO deptInfoDAO = (IDeptInfoDAO)ApplicationContextKeeper.getAppCtx().getBean("deptInfoDAO");
deptInfoDAO.listDeptData.....
}
當然我是初次應用,想來也不會有什麼問題。大家可以討論討論
相關文章
- 關於spring框架中的事務問題(急)Spring框架
- 關於基於JiveJdon3框架的POJOObjectFactory問題框架POJOObject
- 請教關於Singleton模式和synchronized static 方法的問題模式synchronized
- C++ 關於static variables的學習中遇到的問題總結C++
- 關於在專案中使用spring3的jms出現的問題。Spring
- 關於在forEach中使用await的問題AI
- 關於excelize庫的使用問題Excelize
- 基於註解的spring 在靜態方法中使用注入的類Spring
- 關於typedef在struct使用上的一些問題Struct
- 關於spring中commons-attributes-compiler.jar的使用問題薦SpringCompileJAR
- 關於工作中遇到的問題
- 關於cuda中的函式問題函式
- 關於 iOS 10 中 ATS 的問題iOS
- 關於struts中html:errors/的問題HTMLError
- 關於C++中在模板引數中使用Lambda表示式的問題C++
- 關於Spring事務回滾的問題Spring
- 關於 Android studio 在xml中不提示的問題AndroidXML
- 關於轉義符 在php正則中的匹配問題PHP
- SpringBoot中關於Mybatis使用的三個問題Spring BootMyBatis
- 關於Spring中的useSuffixPatternMatchSpring
- 關於SQLServerDriver的問題SQLServer
- 關於 JavaMail 的問題JavaAI
- 關於session的問題Session
- 關於vue的使用計算屬性VS使用計算方法的問題Vue
- 關於SSH中對於action的監聽問題(關於系統計數)
- 關於 mysql 中的 rand () 查詢問題MySql
- 關於 Laravel 中 Ajax 問題的小結Laravel
- 關於iOS10中ATS的問題iOS
- java中關於Map的九大問題Java
- 關於考勤模組中設計的問題
- 關於jsp中轉發的問題JS
- 關於jdonframework框架的小疑問Framework框架
- 關於ThinkPHP在Nginx伺服器上使用U方法跳轉問題PHPNginx伺服器
- 關於逗號( , )在JS中的使用技巧JS
- 關於使用擴充套件包的問題。套件
- 關於 Roguelike 的探討,及基於 Roguelike 的新框架框架
- pageHelper在Spring框架中pageSize無法修改的問題Spring框架
- 關於在頁面中解決列印的幾個問題 (轉)