2009-09-05 61 views
1

它現在似乎沒有工作。我得到一個我可以在Spring中注入接口子類型嗎?

顯示java.lang.NullPointerException

我有一個實現接口的類

public class LearnerDao implements BaseDao { 
    private BaseDao dao; 
    public void setDao(BaseDao dao) { 
     this.dao=dao; 
    } 
    . 
    . 
    . 
} 

這是我的佈線

<bean id="pm" factory-bean="pmf" factory-method="getPersistenceManager" 
     scope="prototype"></bean> 

<bean id="learnerDao" class="com.hardwire.dao.impl.LearnerDao"> 
    <property name="pm" ref="pm"></property> 
</bean> 

<bean id="twitterUserDao" class="com.hardwire.dao.impl.TwitterUserDao"> 
    <property name="pm" ref="pm"></property> 
</bean> 

<bean id="learnerService" class="com.hardwire.service.LearnerService"> 
     <property name="dao" ref="learnerDao"></property 
</bean> 

這裏是我的learnerService

public class LearnerService { 
private static final Logger log = 
     Logger.getLogger(LearnerService.class.getName()); 
private BaseDao dao; 
. 
    . 
    . 
public void insert(Learner learner){ 
    if (dao==null){ 
     log.info("dao is null"); 
    } 
    else { 
     log.info("dao is not null"); 
    } 
    dao.insert(learner); 
} 
public void setDao(BaseDao dao) { 
    this.dao = dao; 
} 

這只是學習者實現BaseDao的功能。另一方面,bean的twitterUserDao沒有。我想要注意的是,twitterUserDao注入剛好,但學習者Dao不是。 日誌顯示learnerDao爲空。所以我想知道這與學習者實施界面有什麼關係。

回答

0

我終於發現一切都出錯了。我有這個代碼的bug在具有learnerService其相關性的控制器殺:

learnerService = new LearnerService(); 

笑我的屁股現在! :))

0

不,你絕對可以做到這一點。請注意,您正嘗試在learnerDao中設置pm屬性,但您尚未顯示任何設置dao屬性的內容。這可能是問題嗎?

+0

哎呀很抱歉,我已經在我的帖子中闡述了...... – Jeune 2009-09-05 08:21:39

相關問題