image
下⾯有个@Bean的⽅法,创建出TransactionalEventListenerFactory实例
image
EventListener Metho dPro c esso r
在isterAnnotationConfigProcessors()⽅法中会把这个类弄成BeanDefinition,注册到BDRegistry中
image
这个类实现EventListenerMethodProcessor接⼝的postProcessBeanFactory⽅法,和BeanFactoryPostProcessor接⼝的afterSingletonsInstantiated(),其他Bean实例化过程中会调⽤到这两个⽅法
spring ioc注解
image
创建
在所有bean实例化之后,实现SmartInitializingSingleton接⼝的Bean,会被调⽤到实现该接⼝的afterSingletonsInstantiated⽅法。
DefaultListableBeanFactory.preInstantiateSingletons()
image
这⾥EventListenerMethodProcessor调⽤afterSingletonsInstantiated⽅法
image
从BeanFactoryBean取出所有的BeanName,循环调⽤processBean⽅法
image
pr o c essBea n⽅法
从bean的Class对象中出含有@EventListener注解的⽅法,存到Map<Method, EventListener>中, @TransactionListenr⽅法也会被匹配,因为这个注解⾥打了@EventListener
image
如果从Bean的Class对象中,到了含有@EventListener注解的⽅法,循环每⼀个⽅法,循环调⽤EventListenerFactory的⼦类进⾏,判断是否⽀持该⽅法的上的注解
//策略模式,如果⽀持解析该⽅法的注解,则调⽤该factory的createApplicationListener⽅法创建
1. TransactionalEventListenerFactory ⽤来对@TransactionalEventListener修饰的⽅法创建
image
2. DefaultListenerFactory ⽤来对@EventListener,@TransactionalEventListener修饰的⽅法创建
image
创建A p p licationL is te ne r Me thod T r ans actionalA d ap te r对象
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论