Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 理解Spring上下文初始化顺序_Java_Spring_Javabeans - Fatal编程技术网

Java 理解Spring上下文初始化顺序

Java 理解Spring上下文初始化顺序,java,spring,javabeans,Java,Spring,Javabeans,我有一组复杂的bean以及它们之间的依赖关系。所有bean都是@Service,@Repository或@Controller注释的,我使用@PostConstruct注释。存在一些循环依赖项,但系统仍然由Spring正确初始化 然后,我添加了一个简单的控制器,它只依赖于其中一个服务。理论上,系统应该能够启动,因为理论上,它可以先像以前一样设置系统,然后再设置新的控制器。但Spring抱怨说它无法建立上下文: 创建名为“userService”的bean时出错:请求的bean当前正在创建中:是否

我有一组复杂的bean以及它们之间的依赖关系。所有bean都是
@Service
@Repository
@Controller
注释的,我使用
@PostConstruct
注释。存在一些循环依赖项,但系统仍然由Spring正确初始化

然后,我添加了一个简单的控制器,它只依赖于其中一个服务。理论上,系统应该能够启动,因为理论上,它可以先像以前一样设置系统,然后再设置新的控制器。但Spring抱怨说它无法建立上下文:

创建名为“userService”的bean时出错:请求的bean当前正在创建中:是否存在无法解析的循环引用?


我可以帮助Spring对上下文初始化进行排序吗?我认为主要的问题是
用户服务
,它在系统中被大量用于身份验证目的。

最好的解决方案就是去掉循环依赖;我还没有遇到过这样一种情况,即这种结构是值得的。但是,如果您确实想坚持使用它,那么上述问题可能是由于您在某个地方进行了构造函数注入:

循环依赖 如果您主要使用构造函数注入,则可以编写和配置类和bean,从而创建无法解决的循环依赖场景。 考虑具有类A的场景,这需要通过构造函数注入和类B提供类B的实例,这需要通过构造函数注入提供类A的实例。如果为类A和类B配置bean以相互注入,Spring IoC容器将在运行时检测到该循环引用,并抛出BeanCurrentlyIncrementationException

解决这个问题的一个可能办法是 若要编辑以下部分的源代码: 要通过配置的类 setters而不是via构造函数。 另一个解决方案是不使用 构造函数注入并坚持 仅限塞特注射。换句话说,, 但除了最罕见的 情况,有可能 使用配置循环依赖项 塞特注射。不像典型的 案例(无循环依赖关系), bean和 bean B将强制其中一个bean 注入另一个之前 完全初始化自身(a) 经典的鸡/蛋场景)