2010-01-15 109 views
3

我對注入豆類的整個想法相當陌生,所以慢慢說。 :)彈簧注入Bean屬性爲空

我有一個類,注入一個bean,但是當該屬性被訪問,該屬性爲空,我得到一個空指針異常。

從/project-TRUNK/war-module/src/main/webapp/WEB-INF/spring-config/spring-bean.xml

<bean id="linkCheck" 
    class="com.dogwatch.util.LinkCheck"> 
    <property name="linkDao" ref="jdbcLinkDao" /> 
</bean> 

從/項目TRUNK /戰模塊/ SRC /主/ web應用/ WEB-INF /彈簧配置/彈簧dao.xml

<bean id="jdbcLinkDao" class="com.dogwatch.util.jdbcLinkDao"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="linkJdbcDataTypesSupport" ref="linkJdbcDataTypesSupport"/> 
</bean> 

的DAO bean被稱爲是好的,在其他幾類工作。

package com.dogwatch.util; 
public class LinkCheck { 

private LinkDAO linkDao; 


public LinkDAO getLinkDao() { 
    return linkDao; 
} 

public void setLinkDao(LinkDAO linkDao) { 
    this. linkDao = linkDao; 
} 
} 

我一直在比較它使用相同的DAO bean的其他類,我找不到任何區別。 加載 - [主] [XmlBeanDefinitionReader] [XmlBeanDefinitionReader.java:323]

INFO [05838 2010-01-15 01:10]

我看到豆越來越定義來自URL [文件:war-module/src/main/webapp/WEB-INF/spring-config/spring-dao.xml]的XML bean定義信息[2010-01-15 01:10:05,858] [main] [XmlBeanDefinitionReader] [XmlBeanDefinitionReader.java:323] - 從URL加載XML bean定義 [file:war-module/src/mai n/webapp/WEB-INF/spring-config/spring-bean.xml] INFO [2010-01-15 01:10:06,597] [main] [DefaultListableBeanFactory] ​​ [DefaultListableBeanFactory.java:414] - Pre -instantiating單身在org.s[email protected]3c01d5a0: 限定豆[(剪斷)jdbcLinkDao, linkCheck(剪斷)businessLoggingAspect,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#1]; 工廠層級根目錄

有沒有人對如何解決bean注入問題有任何建議?

+0

錯誤導致前兩個答案固定。 – wadesworld 2010-01-15 08:00:13

+1

我們仍然缺少一些信息,比如使用linkCheck bean的代碼如何獲取它?它是否也被注入?你從Spring上下文中檢索它嗎?我假設你沒有做新的LinkCheck(),但由於你是Spring的新手,這是一個明智的開始問題。 – SteveD 2010-01-15 08:07:34

+0

@Wade:修復你的'spring-dao.xml'。謝謝。是的,回答史蒂文尼克。 – 2010-01-15 08:12:58

回答

8

我從OP的問題擴大我的評論,因爲它似乎有幫助...

我們仍然缺少一些信息,比如使用linkCheck bean的代碼如何獲取它?它是否也被注入?你從Spring上下文中檢索它嗎?我假設你沒有做new LinkCheck(),但由於你是Spring的新手,這是一個明智的開始問題。

如果Spring控制bean的創建,只能注入bean:如果你做new MyClass()那麼Spring容器不知道該對象並且不能進行注入。

+1

+1現在韋德輪到了。 ;) – 2010-01-15 10:58:48

1

有一個潛在的問題,'jdbcLinkDao'的類型是'jdbcLinkDao',但是setter的參數類型是LinkDAO。 (!如果「jdbcLinkDao」是「LinkDAO」這可能是OK的亞型......但FIX類名)

如果這不是問題,我建議你:

  • 設置日誌級別調試,

  • 如果沒有顯示任何內容,請將跟蹤打印添加到LinkCheck.setLinkDAO()以查看正在設置的值以及設置的時間。