我的springboot应用程序运行良好,直到我添加以下类:
@Service
@RequiredArgsConstructor
public class AutoopsClientPostBootListener implements ApplicationListener<ContextRefreshedEvent>
{
private final IAutoOpsGnsFlowInitiator gnsFlowInitator;
@Override
public void onApplicationEvent(ContextRefreshedEvent event)
{
gnsFlowInitator.startClient(event);
}
}
在那之后,由于某种奇怪的原因,我收到了一个循环依赖错误,该错误源自 虚假客户端依赖于上方的 AutoopsClientPostBootListener 。
发生这种情况是因为IAutoOpsGnsFlowInitiator依赖于依赖于AutoopsClientPostBootListener的伪客户端。但是FeignClient甚至没有任何成员..(伪装自动生成它),那么它如何依赖于侦听器呢?!
出什么问题了?
感谢您的帮助
答案 0 :(得分:0)
所以问题出在ApplicationListener上(不知道为什么)。 使用@EventListener解决了问题。
@EventListener
public void onApplicationEvent(ContextRefreshedEvent event)
{
gnsFlowInitator.startClient(event);
}
答案 1 :(得分:0)
问题取决于上下文的阶段,一旦上下文被初始化或更改,就会调用刷新,因此将触发您的事件,如果您需要在上下文完全初始化后执行startClient,则{ {1}}将由@EventListener
触发,只有在您的应用程序上下文被完全初始化以致伪装已经被加载时,才会调用{1}。
希望这会有所帮助。