在我们现在系统的代码中,存在很多类似的代码,这个接口大家都应该认得,是spring预留的接口
在所有的bean加载完毕后执行。
/**
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
*/
public void afterPropertiesSet() throws Exception {
1. 从其他系统加载数据
2.如果加载失败,直接抛异常,系统不启动
}
在这个过程中,如果被加载的系统挂掉了,这个系统暂时就启动不了。
其实这是系统间的一种依赖,这样就要求系统A启动之后,系统B才能启动,1,2个系统还好说,如果系统多
了系统的启动顺序就比较难以控制,发布的难度就会增大(当然,系统的启动顺序不只光跟这个有关系)。
大家这样做的目的无非有(大家也可以补充):
1.性能方面的问题,某些数据相对来说是不经常变化的,当前系统只有很少一部分模块会使用这部分数据,
只需要系统启动的时候,到其他系统取一遍,放到内存中,减少远程调用的次数;
2.当前系统确实需要依赖另外一个系统的数据,如果没有这部分数据,系统将无法进行后续的业务;
对于第二种情况,确实是需要这样做的,如果是第一种情况,我们可以这样做
系统数据 a = null;
if(null == a){
a = 系统B的查询结果
}
return a
如果有2个系统,这样做的话,单纯对第一种情况来说,这个2个系统是可以同时启动的,从一定程度上
降低了系统间的依赖;但是如果在启动时加载的话,就必须第一个系统成功的启动起来。