gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:37:59 24 4
gpt4 key购买 nike

使用 Spring 3.0.x,我遇到了 Bean 初始化方法正在运行的问题,作为它的一部分获取一些信息,然后在另一个线程中(原始 init() 线程等待其他线程完成)尝试根据该信息检索获取一个或多个 Bean。问题是,这些其他的 Bean 也是单例的,还没有被初始化。在 getSingleton() 方法的 DefaultSingletonBeanRegistry 中有一个 synchronized() block 。

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

所以,在我看来,我有 2 个选择:

1) 在完全创建单例之后让 Spring 运行一个方法来执行实际的数据获取和处理2) 想出传递给的消息,将数据返回给主线程,然后在主线程中处理它们,因为它已经有了监视器锁

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

最佳答案

您是否尝试过实现 InitializingBean界面

class MyBean implements InitializingBean{

@Override
public void afterPropertiesSet(){
// fetch information, etc
}
}

根据文档:

Interface to be implemented by beans that need to react once all their properties have been > set by a BeanFactory: for example, to perform custom initialization...

关于java - Spring单例初始化完成后如何运行方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9106185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com