2012-03-15 72 views
0

在我的spring配置文件中,我聲明瞭一個通過靜態工廠方法實例化的bean。工廠方法調用一些遠程服務。工廠方法返回null,因爲它無法訪問遠程服務。在Spring中從工廠方法返回null

當工廠方法返回null時,我的問題一切都出錯了。並且彈簧初始化失敗。

如果工廠方法無法調用遠程服務,我真的想將bean設置爲null。我的配置文件的

部分如下:

<bean id="Helper" class="com.test.Helper"> 
    <constructor-arg ref="myBean" /> 
</bean> 
<bean id="myBean" class="com.test.Factory" factory-method="getBean" /> 

中的getBean()方法如下:

Factory { 
     public static Bean getBean() throws Exception{ 

      try { 
       //Invokes some Remote Services and does some processing 
       .... 
       .... 
       //returns bean object 
      }catch(Exception e) { 
       return null; 
      }  
     } 

    } 

請幫助我,我怎麼能解決這個問題。

+1

你有一個堆棧跟蹤和一些代碼嗎? – Ralph 2012-03-15 14:14:38

+1

提供堆棧跟蹤 – Bozho 2012-03-15 14:46:59

+0

不要返回'null'。您將得到NullPointerExceptions,並且您將無法確定是否因爲您錯誤地配置了Spring或服務器不可用。查看Null Object模式以獲取默認返回值。 – artbristol 2012-03-15 16:15:52

回答

2

使用MethodInvokingFactoryBean像這樣:

<bean id="myBean" 
     class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
<property name="targetClass"><value>com.test.Factory</value></property> 
<property name="targetMethod"><value>getBean</value></property> 
</bean> 
0

你可以返回null。但要確保這個null值的b'coz不會引發NullPointerException異常。如果它正在提高只是保持一個簡單的條件或將控制權從原來的位置返回或處理得如此完美