2012-03-15 8 views
0

私のスプリングコンフィグレーションファイルでは、静的ファクトリメソッドを使用してインスタンス化された1つの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

+1

stacktraceを提供 – Bozho

+0

'null'を返しません。あなたはNullPointerExceptionsを取得し、あなたがSpringを間違って設定したか、またはサーバが利用できないことが原因であるかどうかを調べることができません。返される既定値については、Nullオブジェクトパターンを参照してください。 – artbristol

答えて

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が発生しないことを確認してください。単純なif条件を維持するか、または考えが完璧であるときにコントロールが来る場所から戻って戻す

関連する問題