看jdon原始碼關於依賴反射的一點疑惑

Arsenal發表於2008-10-23
我看jdon裡面配置service的時候依賴一些component的時候,並沒有指明依賴那個component呢,
如:<pojoService name="accountService"
class="com.jdon.jivejdon.service.imp.account.AccountServiceImp"/>

然後我看程式碼:
public AccountServiceImp(AccountDao accountDao, SequenceDao sequenceDao,
SessionContextUtil sessionContextUtil, JtaTransactionUtil jtaTransactionUtil,
ResourceAuthorization resourceAuthorization,
OldUpdateNewUtil oldUpdateNewUtil,
EmailHelper emailHelper) {
this.accountDao = accountDao;
this.sequenceDao = sequenceDao;
this.sessionContextUtil = sessionContextUtil;
this.jtaTransactionUtil = jtaTransactionUtil;
this.resourceAuthorization = resourceAuthorization;
this.oldUpdateNewUtil = oldUpdateNewUtil;
this.emailHelper = emailHelper;
}

我想是不是透過 引數名來定位的,如 AccountDao accountDao ,框架就會去找component 的name是accountDao 的元件呢,如配置檔案裡就有這麼一條:
<component name="accountDao"
class="com.jdon.jivejdon.dao.filter.AccountDaoDecorator"/>
應該是這樣的吧,如果這樣,這個accountDao是一個類 例項的引數名,如何得到這個支付串呢,我試了很多方法,都只能得到類AccountDao的名字,


還有就是jf框架裡得到某個component的值是這樣的:
元件POJO獲得方法是透過WebAppUtil的getComponentInstance方法,例如在container.xml中有如下元件定義:
<component name="modelManager" class="com.jdon.model.ModelManagerImp" />
在程式中如果要獲得ModelManagerImp元件例項的方法是:
ModelManager modelManager =
(ModelManager)WebAppUtil.getComponentInstance(“modelManager”, sc);
元件例項獲得的原理實際是直接在微容器中尋找以前註冊過的那些POJO,

為什麼還要有sc這個引數啊,也就是要依賴context,為什麼不能像spring那樣直接傳入name就能得到component的object呢?

[該貼被Arsenal於2008-10-24 10:16修改過]

相關文章