将顺序指定为Spring@Autwire [英] Specify order to Spring @Autowired

查看:0
本文介绍了将顺序指定为Spring@Autwire的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是Spring框架4。

我有一个类(比如ClassA),其中使用了另一个类(比如ClassB)。ClassA的成员变量正在从ClassB获取值。ClassB有一个从属性文件读取数据的静态方法。在ClassB中,使用@Autowired注释注入静态成员变量ApplicationContext

我想要的是,我想确保当ClassA使用其成员变量时,它应该使用从属性文件读取的值进行所有设置。而对于该类,B应将ApplicationContext全部设置为从MessageSource读取。

当ClassA标记为@Component时,Spring加载ClassA,但当它尝试初始化成员变量时,它得到NullPointerException,因为ApplicationContext尚未初始化。

所以我的问题是,有没有什么方法可以让Spring告诉某个Bean应该按某种顺序或类似的顺序进行初始化。我尝试使用@DependsOn注释,并将@Bean指定为ApplicationContext的getter方法。但它给出了以下例外:

Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'applicationContext': Requested bean is currently in creation: Is there an unresolvable circular reference?

对这个问题有什么想法吗?

谢谢

推荐答案

感谢您的评论。

我在Spring框架提供的一个批注中找到了解决方案。

@DependsOn批注的解决方案起作用。实际上,当我使用ApplicationContext的@Bean上述getter方法时,它触发了问题中提到的异常。然后,我阅读了@DependsOndocumentation注释。它声明该注释适用于@Bean和@Component。作为ApplicationContext被注入的类,我已经使ClassA@DependsOn成为@Component被注入的类,并且它起作用了。

再次感谢您的评论。

这篇关于将顺序指定为Spring@Autwire的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆