编程语言
首页 > 编程语言> > java-指定Spring @Autowired的顺序

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