java-指定Spring @Autowired的顺序
作者:互联网
我正在使用Spring Framework 4.
我有一个类(例如ClassA),其中使用了另一个类(例如ClassB). ClassA的成员变量从ClassB获得价值. ClassB具有从属性文件读取数据的静态方法.在ClassB中,使用@Autowired批注注入了静态成员变量ApplicationContext.
我想要的是,我要确保当ClassA使用其成员变量时,它应该使用从属性文件读取的值进行所有设置.为此,ClassB应该将ApplicationContext设置为从MessageSource读取的所有内容.
由于将ClassA标记为@ Component,Spring会加载ClassA,但是当它尝试初始化成员变量时,由于ApplicationContext尚未初始化,它会收到NullPointerException.
所以我的问题是,有什么方法可以让Spring告诉您应该按某种顺序或类似的方式初始化某些bean.我尝试使用@DependsOn批注,并将@Bean指定给ApplicationContext的getter方法.但是它给出了以下异常:
由以下原因引起:org.springframework.beans.factory.BeanCurrentlyInCreationException:创建名称为’applicationContext’的bean时出错:当前正在创建请求的bean:是否存在不可解析的循环引用?
对这个问题有什么想法吗?
谢谢
解决方法:
感谢您的评论.
我在Spring Framework提供的注释之一中找到了解决方案.
@DependsOn注释的解决方案有效.实际上,当我在ApplicationContext的getter方法上方使用@Bean时,它触发了问题中提到的异常.然后,我阅读了@DependsOn注释的documentation.它指出此批注适用于@Bean和@Component.作为注入ApplicationContext的类,我将ClassA @DependsOn @Component类注入了ApplicationContext并可以正常工作.
再次感谢您的评论.
标签:autowired,spring-annotations,spring,java,spring-mvc 来源: https://codeday.me/bug/20191029/1962059.html