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工作?
您是否尝试过实现InitializingBean接口?
class MyBean implements InitializingBean{
@Override
public void afterPropertiesSet(){
// fetch information, etc
}
}
Run Code Online (Sandbox Code Playgroud)
根据文件:
接口由bean实现,一旦所有属性都被BeanFactory设置,需要做出反应:例如,执行自定义初始化...