43、扩展原理-@EventListener与SmartInitializingSingleton

43、扩展原理-@EventListener与SmartInitializingSingleton

  • 还可以使用 @EventListener; 来监听事件
  • 原理:使用EventListenerMethodProcessor处理器来解析方法上的@EventListener;

使用

@Service
public class UserService {

    @EventListener(classes = ApplicationEvent.class)
    public void listen(ApplicationEvent applicationEvent) {
        System.out.println("UserService 监听到的事件.. " + applicationEvent);
    }
}

SmartInitializingSingleton 原理

  • 会调用 ->afterSingletonsInstantiated();
1)、ioc容器创建对象并refresh();
2)、finishBeanFactoryInitialization(beanFactory);初始化剩下的单实例bean;
  1. 先创建所有的单实例bean;getBean();
  2. 获取所有创建好的单实例bean,判断是否是SmartInitializingSingleton类型的;
  3. 如果是就调用afterSingletonsInstantiated();
原文地址:https://www.cnblogs.com/Grand-Jon/p/10067949.html