0

我用以下组件依赖树制作了一个简单的应用程序:

Service1 injects Service2(via constructor)
Service2 injects SomeContext(via setter)
SomContext injects Service1(via setter)
Advisor is for Service1

因此,当 spring 尝试构建 Service1 或 Service2 时,它会自动尝试应用建议,但在 spring 中有一个检查 - isCurrentlyInCreation(在 BeanFactoryAdvisorRetrievalHelper.java 中),因此它尝试应用建议的 bean 仍然是它的创建并跳过建议应用.

我知道 bean 的递归是一种糟糕的设计方式,但现在很难解耦和重构。

我在someContext的factorybean的帮助下解决了这个问题,并在需要时通过applicationcontext(applicationcontextaware)加载Service1,但也许有人知道更好的解决方案?

4

1 回答 1

1

如果您应用编译时编织而不是加载时编织,则可以解决此问题。这里有两篇文章可以帮助您入门:

于 2013-01-03T07:10:15.443 回答