Spring单例初始化完成后如何运行方法?

Dri*_*321 2 java spring dependency-injection initialization

使用Spring 3.0.x,我遇到了一个运行Bean init方法的问题,并且其中一部分提取了一些信息,然后在另一个线程中(原始init()线程等待其他线程完成)尝试根据该信息检索获取一个或多个Bean.问题是,这些其他豆类也是单身,尚未初始化.在getSingleton()方法中,DefaultSingletonBeanRegistry中有一个synchronized()块.

问题出现了,我正在尝试获取/初始化Bean,而我正在初始化Bean,所以我在init()方法中遇到主线程,另一个线程试图获取另一个单例Bean,并且被阻止,因为第一个线程有锁.

所以,我看到它的方式,我有两个选择:

1)获取Spring在完全创建单例之后运行一个方法,执行实际数据获取和处理2)提供消息传递给它将数据返回给主线程,然后在其中处理所有数据,因为它已经有显示器锁定

思考?想法?我怎样才能让#1工作?

ggr*_*ner 5

您是否尝试过实现InitializingBean接口?

class MyBean implements InitializingBean{

    @Override
    public void afterPropertiesSet(){
       // fetch information, etc
    }
}
Run Code Online (Sandbox Code Playgroud)

根据文件:

接口由bea​​n实现,一旦所有属性都被BeanFactory设置,需要做出反应:例如,执行自定义初始化...