从Spring中的工厂方法返回null

时间:2012-03-15 14:09:47

标签: spring

在我的spring配置文件中,我声明了一个通过静态工厂方法实例化的bean。工厂方法调用一些远程服务。工厂方法返回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;
            }    
      }

  }

请帮助我如何解决这个问题。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:-1)

你可以返回null。但请确保这个空值的b'coz不会引发NullPointerException。如果它正在提高只是保持一个简单的if条件或将控制从它来的地方返回或处理,因为思考是完美的