Specify order to Spring @Autowired(将顺序指定为Spring@Autwire)
问题描述
我使用的是Spring框架4。
我有一个类(比如ClassA),其中使用了另一个类(比如ClassB)。ClassA的成员变量正在从ClassB获取值。ClassB有一个从属性文件读取数据的静态方法。在ClassB中,使用@Autowired
注释注入静态成员变量ApplicationContext
。
我想要的是,我想确保当ClassA使用其成员变量时,它应该使用从属性文件读取的值进行所有设置。而对于该类,B应将ApplicationContext
全部设置为从MessageSource
读取。
当ClassA标记为@Component
时,Spring加载ClassA,但当它尝试初始化成员变量时,它得到NullPointerException
,因为ApplicationContext
尚未初始化。
@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方法时,它触发了问题中提到的异常。然后,我阅读了@DependsOn
的documentation注释。它声明该注释适用于@Bean和@Component。作为ApplicationContext
被注入的类,我已经使ClassA@DependsOn
成为@Component
被注入的类,并且它起作用了。
再次感谢您的评论。
这篇关于将顺序指定为Spring@Autwire的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将顺序指定为Spring@Autwire


基础教程推荐
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 降序排序:Java Map 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01