org.springframework.context.event.AbstractApplicationEventMulticaster

本文详细介绍了Spring框架中如何管理事件监听器,包括通过检索不同的事件类型和源类型来筛选合适的监听器,并确保它们按正确的顺序执行。同时,文章还探讨了如何从BeanFactory中获取并初始化监听器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private Collection<ApplicationListener<?>> retrieveApplicationListeners(ResolvableType eventType, Class<?> sourceType, AbstractApplicationEventMulticaster.ListenerRetriever retriever) {
LinkedList allListeners = new LinkedList();
Object beanFactory = this.retrievalMutex;
LinkedHashSet listeners;
LinkedHashSet listenerBeans;
synchronized(this.retrievalMutex) {
listeners = new LinkedHashSet(this.defaultRetriever.applicationListeners);
listenerBeans = new LinkedHashSet(this.defaultRetriever.applicationListenerBeans);
}

Iterator beanFactory1 = listeners.iterator();

while(beanFactory1.hasNext()) {
ApplicationListener listener = (ApplicationListener)beanFactory1.next();
if(this.supportsEvent(listener, eventType, sourceType)) {
if(retriever != null) {
retriever.applicationListeners.add(listener);
}

allListeners.add(listener);
}
}

if(!listenerBeans.isEmpty()) {
BeanFactory beanFactory2 = this.getBeanFactory();
Iterator listener2 = listenerBeans.iterator();

while(listener2.hasNext()) {
String listenerBeanName = (String)listener2.next();

try {
Class listenerType = beanFactory2.getType(listenerBeanName);
if(listenerType == null || this.supportsEvent(listenerType, eventType)) {
ApplicationListener listener1 = (ApplicationListener)beanFactory2.getBean(listenerBeanName, ApplicationListener.class);
if(!allListeners.contains(listener1) && this.supportsEvent(listener1, eventType, sourceType)) {
if(retriever != null) {
retriever.applicationListenerBeans.add(listenerBeanName);
}

allListeners.add(listener1);
}
}
} catch (NoSuchBeanDefinitionException var13) {
;
}
}
}

AnnotationAwareOrderComparator.sort(allListeners);
return allListeners;
}


org.springframework.context.event.AbstractApplicationEventMulticaster

 

Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.boot.SpringApplicationRunListener : org.springframework.boot.context.event.EventPublishingRunListener at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:461) at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:443) at org.springframework.boot.SpringApplication.getRunListeners(SpringApplication.java:431) at org.springframework.boot.SpringApplication.run(SpringApplication.java:297) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) at com.example.demo.Demo4Application.main(Demo4Application.java:10) Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.context.event.EventPublishingRunListener]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/aop/framework/AopProxyUtils at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224) at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:457) ... 6 more Caused by: java.lang.NoClassDefFoundError: org/springframework/aop/framework/AopProxyUtils at org.springframework.context.event.AbstractApplicationEventMulticaster.addApplicationListener(AbstractApplicationEventMulticaster.java:108) at org.springframework.boot.context.event.EventPublishingRunListener.<init>(EventPublishingRunListener.java:67) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ... 7 more Caused by: java.lang.ClassNotFoundException: org.springframework.aop.framework.AopProxyUtils at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 14 more
07-03
14:06:01.565 [main] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - [refresh,599] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'productInformationController': Unsatisfied dependency expressed through field 'productInformationService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'productInformationServiceImpl': Unsatisfied dependency expressed through field 'rabbitMqService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.aerors.common.mq.service.RabbitMqService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 14:06:01.570 [main] WARN o.s.c.a.AnnotationConfigApplicationContext - [doClose,1075] - Exception thrown from ApplicationListener handling ContextClosedEvent org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'rabbitConnectionFactory': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:214) at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:264) at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:221) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:140) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:430) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:436) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:387) at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1072) at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1035) at org.springframework.cloud.context.named.NamedContextFactory.destroy(NamedContextFactory.java:99) at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:213) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1123) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:604) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:409) at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1289) at com.aerors.interpretation.AerorsInterpretationApplication.main(AerorsInterpretationApplication.java:20) 14:06:01.572 [main] INFO c.b.d.d.DynamicRoutingDataSource - [destroy,215] - dynamic-datasource start closing .... 14:06:01.574 [main] INFO c.a.d.p.DruidDataSource - [close,2204] - {dataSource-1} closing ... 14:06:01.577 [main] INFO c.a.d.p.DruidDataSource - [close,2277] - {dataSource-1} closed 14:06:01.577 [main] INFO c.b.d.d.d.DefaultDataSourceDestroyer - [destroy,98] - dynamic-datasource close the datasource named [master] success, 14:06:01.577 [main] INFO c.b.d.d.DynamicRoutingDataSource - [destroy,219] - dynamic-datasource all closed success,bye 14:06:01.578 [main] INFO o.a.c.c.StandardService - [log,173] - Stopping service [Tomcat] 14:06:01.629 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter - [report,40] - *************************** APPLICATION FAILED TO START *************************** Description: Field rabbitMqService in com.aerors.interpretation.service.impl.ProductInformationServiceImpl required a bean of type 'com.aerors.common.mq.service.RabbitMqService' that could not be found. The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean of type 'com.aerors.common.mq.service.RabbitMqService' in your configuration.
最新发布
07-09
分析错误:2025-05-28T18:43:37.141+08:00 WARN 23636 --- [todo-integration-server] [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'synYdyDataController': Unsatisfied dependency expressed through field 'ydyPullDelayTaskExecutor': Error creating bean with name 'ydyPullDelayTaskExecutor' defined in file [E:\workSpace\cnooc_platform\eadcloud-todo-integration-server\server\hd-todo-integration-server\build\resources\main\META-INF\spring\todo-pull-quartz.xml]: Cannot resolve reference to bean 'ydyPullTaskProvider' while setting bean property 'taskProvider' 2025-05-28T18:43:37.144+08:00 WARN 23636 --- [todo-integration-server] [ main] s.c.a.AnnotationConfigApplicationContext : Exception thrown from ApplicationListener handling ContextClosedEvent org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'connectionFactory': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:265) at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:222) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:452) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:458) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:385) at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1139) at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1102) at org.springframework.cloud.context.named.NamedContextFactory.destroy(NamedContextFactory.java:114) at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:211) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1207) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1200) at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1195) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:638) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149) at com.hd.rcugrc.TodoIntegrationServerApplication.main(TodoIntegrationServerApplication.java:72) 2025-05-28T18:43:37.196+08:00 WARN 23636 --- [todo-integration-server] [ main] c.t.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [Thread-7] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.base@17.0.1/sun.net.dns.ResolverConfigurationImpl.notifyAddrChange0(Native Method) java.base@17.0.1/sun.net.dns.ResolverConfigurationImpl$AddressChangeListener.run(ResolverConfigurationImpl.java:176) 2025-05-28T18:43:37.301+08:00 ERROR 23636 --- [todo-integration-server] [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:86) The following method did not exist: 'void org.apache.hc.core5.http.impl.io.DefaultHttpRequestWriterFactory.<init>(org.apache.hc.core5.http.config.Http1Config)' The calling method's class, org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory, was loaded from the following location: jar:file:/D:/soft/gradle-8.10.2/caches/modules-2/files-2.1/org.apache.httpcomponents.client5/httpclient5/5.4/8f5efeb3af5b5196925ea20d25c052ec9ac24d63/httpclient5-5.4.jar!/org/apache/hc/client5/http/impl/io/ManagedHttpClientConnectionFactory.class The called method's class, org.apache.hc.core5.http.impl.io.DefaultHttpRequestWriterFactory, is available from the following locations: jar:file:/D:/soft/gradle-8.10.2/caches/modules-2/files-2.1/org.apache.httpcomponents.core5/httpcore5/5.2.5/dab1e18842971a45ca8942491ce005ab86a028d7/httpcore5-5.2.5.jar!/org/apache/hc/core5/http/impl/io/DefaultHttpRequestWriterFactory.class The called method's class hierarchy was loaded from the following locations: org.apache.hc.core5.http.impl.io.DefaultHttpRequestWriterFactory: file:/D:/soft/gradle-8.10.2/caches/modules-2/files-2.1/org.apache.httpcomponents.core5/httpcore5/5.2.5/dab1e18842971a45ca8942491ce005ab86a028d7/httpcore5-5.2.5.jar Action: Correct the classpath of your application so that it contains compatible versions of the classes org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory and org.apache.hc.core5.http.impl.io.DefaultHttpRequestWriterFactory
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值