在我的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;
}
}
}
请帮助我如何解决这个问题。
答案 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条件或将控制从它来的地方返回或处理,因为思考是完美的