// containerimpl 中定義的靜態內部類
/**
* injects a field or method in a given object.
*/inte***ce injector extends serializable
static class missingdependencyexception extends exception
}
// 一些injector 的實現類
static class fieldinjector implements injector
//不使用建構函式不知道為何了?????
this.externalcontext = externalcontext.newinstance(field, key, container);
}// 此處是核心關鍵呼叫的方法
public void inject(internalcontext context, object o) catch (illegalacces***ception e) finally
}}
static class parameterinjector
//member 反映有關單個成員(欄位或方法)或構造方法的標識資訊。
t inject(member member, internalcontext context) finally
}}
static class constructorinjector catch (missingdependencyexception e)
injectors = container.injectors.get(implementation);
}//內部類中提供的方法
@suppresswarnings("unchecked")
private constructorfindconstructorin(clas******mentation)
found = constructor;}}
if (found != null)
// if no annotated constructor is found, look for a no-arg constructor
// instead.
try catch (nosuchmethodexception e)
}/**
* construct an instance. returns instead of
* because it may return a proxy.
*/object construct(internalcontext context, class<? super t> expectedtype)
// if we're re-entering this factory while injecting fields or methods,
// return the same instance. this prevents infinite loops.
t t = constructioncontext.getcurrentreference();
if (t != null)
try finally
// store reference. if an injector re-enters this factory, they'll
// get the same reference.
constructioncontext.setcurrentreference(t);
// inject fields and methods.
for (injector injector : injectors)
return t;
} catch (instantiationexception e) catch (illegalacces***ception e) catch (invocationtargetexception e) finally
}}
// container介面實現類中需要 重要的變數定義和方法定義
threadlocallocalcontext = new threadlocal()
};/**
* looks up thread local context. creates (and removes) a new context if
* necessary.
*/t callincontext(contextualcallablecallable) finally
} else
} // 注意此處的介面定義
inte***ce contextualcallable
Struts2對依賴注入的支援
依賴注入 dependency injection 還有乙個名字,即控制反轉 inversion of control ioc 什麼是控制反轉?控制反轉就是由容器控制物件之間的關係,而非傳統實現中,由程式 直接操控。控制權由應用程式轉移到了外部容器,這種控制權的轉移,即所謂反轉 什麼是依賴注入?依賴...
Struts2 為Action的屬性注入值
在struts2中提供了依賴注入的功能 在ridirectaction重定向至某一action配置中 action名稱 命名空間 當把result型別宣告為redirectaction的時候,如果若重定向到其他命名空間下action的時候,我們需要使用param配置節點,為 這個型別所對應的這個類中...
struts2學習筆記 struts2的配置檔案
一 struts.xml定義bean的作用 1.建立該bean的例項,將該例項作為struts2框架的核心元件使用。2.bean包含的靜態方法需要乙個值注入。很方便地允許不建立某個類的例項,卻可以接受框架常量。通常需要設定static true 通常,當指定了type屬性時,該屬性不應該制定為tru...