在我的SF3项目中,我有两个服务相互依赖并导致循环引用问题:
page_handler :
arguments : ["@sentence_handler"]
sentence_handler :
arguments : ["@page_handler"]
因为,从类PageHandler我使用SentenceHandler为一个页面添加一个句子,而从SentenceHandler我使用PageHandler来获取Page的所有句子。
我注意到有3种方法可以解决这个问题:
最好的方法是什么?你有其他想法吗?
答案 0 :(得分:2)
在两项服务上使用setter injection:
page_handler:
class: PageHandler
calls:
- ["setSentenceHandler", ["@sentence_handler"]]
sentence_handler:
class: SentenceHandler
calls:
- ["setPageHandler", ["@page_handler"]]
只要你不需要/使用构造函数中的服务(无论如何都有问题),就没有明显的区别。这意味着您可以在以后安全地将服务注入其他服务。