我使用以下组件的依赖关系树创建了一个简单的应用程序:
Service1 injects Service2(via constructor)
Service2 injects SomeContext(via setter)
SomContext injects Service1(via setter)
Advisor is for Service1
因此,当spring尝试构造Service1或Service2时,它会自动尝试应用advise,但是在spring中有一个检查 - isCurrentlyInCreation(在BeanFactoryAdvisorRetrievalHelper.java中),所以它尝试应用建议的bean仍然是它创建的跳过建议申请。
我知道bean的递归是一种糟糕的设计方式,但现在很难解耦并重构。
我在someCotext的factorybean帮助下解决了这个问题,并在需要时通过applicationcontext(applicationcontextaware)加载了Service1,但也许有人知道更好的解决方案吗?
答案 0 :(得分:1)
如果您应用编译时编织而不是加载时间编织,则可以解决此问题。以下是两篇可以帮助您入门的帖子: