我有一个带有自动装豆的豆。
类似于:
class A
{
@Autowired
B b;
@Autowired
C c;
void function()
{
// here I would like to do something when I an sure the wiring has been done
// being sure that I won't wait forever
...
必须存在一些东西,但我找不到它。
感谢您的帮助!
答案 0 :(得分:3)
您可以使用@PostConstruct注释'function'方法,并在spring config XML中指定<context:annotation-config/>
。然后,只有在自动装配后才会调用函数,因此您可以检查函数是否已成功注入bean。
答案 1 :(得分:1)
实现这一目标的一种经典方法是实施InitializingBean
:
由Bean实现的接口,一旦BeanFactory设置了所有属性,就需要做出反应:例如,执行自定义初始化,或仅检查是否已设置所有必需属性。 实现InitializingBean的替代方法是指定自定义init方法,例如在XML bean定义中。有关所有bean生命周期方法的列表,请参阅BeanFactory javadocs。
我还建议阅读其他答案:
答案 2 :(得分:0)
如果您对单例bean使用默认作用域,则自动装配将始终仅在应用程序启动时完成。如果任何字段的连线失败,则spring容器将抛出异常,应用程序将无法正常启动。因此,如果代码控制在您的方法中,则意味着已完成布线。