我用以下组件依赖树制作了一个简单的应用程序:
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,但也许有人知道更好的解决方案?