`

spring 事件机制 异步操作

阅读更多

1 spring 事件机制的好处:解耦合,对于一对多的操作,可以接触代码耦合

 

2 针对于要解耦的操作,很多都可以异步操作,主线程响应时间会变快,spring提供的事件机制默认是同步的,

 

	@Override
	public void multicastEvent(final ApplicationEvent event, ResolvableType eventType) {
		ResolvableType type = (eventType != null ? eventType : resolveDefaultEventType(event));
		for (final ApplicationListener<?> listener : getApplicationListeners(event, type)) {
			Executor executor = getTaskExecutor();
                        //线程池存在,走异步操作
			if (executor != null) {
				executor.execute(new Runnable() {
					@Override
					public void run() {
						invokeListener(listener, event);
					}
				});
			}
			else {
				invokeListener(listener, event);
			}
		}
	}

 如果想要实现异步操作,需要在发布者中提供ApplicationEventMulticaster的实现,并注入一个线程池,这样就可以实现异步;

坏处: 所有的操作都会异步

 

3 异步的另外一种实现:@Async 可以在事件发布方法上,使用此注解,让事件发布和订阅者处理整个过程是异步的,使用异步注解最好自定义一个线程池,并定义超过线程池容量后的排斥机制,防止线程丢失

 

分享到:
评论

相关推荐

    spring事件机制

    这个机制允许一个组件(通常是一个服务)触发一个事件,然后其他感兴趣的组件(称为监听器)可以响应这个事件并执行相应的操作。 首先,我们来理解一下事件(Event)和事件监听器(EventListener)的概念。在Spring...

    Spring MVC异步模式

    `AsyncWebRequest`对象用于封装异步请求的信息,而`AsyncManager`提供了启动和结束异步操作的方法。在实际开发中,我们还可以自定义`AsyncConfigurer`来调整异步任务的配置,如设置`TaskExecutor`、设置超时时间等。...

    event.rar-Spring事件监听机制

    在Spring框架中,事件监听机制是一种非常重要的组件间通信方式,它允许应用程序的不同部分通过发布和订阅事件来进行异步通信。这种模式使得组件之间松耦合,提高了代码的可维护性和可扩展性。下面我们将详细探讨...

    spring在@Bean注解中initMethod调用方法异步

    代理对象能够拦截调用并将其转换为异步操作。 3. `BeanDefinitionUtil`:这个工具类可能包含了对bean定义的处理逻辑,比如检查和修改bean的定义,以支持异步初始化。 4. `PlaceHolderAnnotationInvocationHandler`...

    spring的Applicationcontext对事件的监听,实现类似MQ的效果

    例如,当用户完成某个操作后,可以触发一个事件,然后由其他服务监听并处理后续操作,如发送通知、更新缓存或执行异步任务等。这种方式降低了组件间的耦合,提高了系统的可扩展性和灵活性。 总之,Spring的`...

    Spring 异步多线程动态任务处理的使用心得

    首先,我们要理解Spring的异步处理机制。Spring通过`@Async`注解实现了方法级别的异步执行。当一个带有`@Async`的方法被调用时,它不会在当前线程中执行,而是由Spring的TaskExecutor负责调度到一个新的线程中运行。...

    DWR集合Spring实现异步提交

    **DWR(Direct Web Remoting)集合Spring实现异步提交** DWR(Direct Web Remoting)是一种开源JavaScript库,它允许Web应用程序在客户端与服务器之间进行实时、双向通信,从而实现异步数据交换。结合Spring框架,...

    spring中监听事件

    本文将深入探讨Spring中的事件监听机制,并通过源码分析来理解其实现原理。 首先,Spring事件是基于Java的`java.util.EventObject`类,它表示一个发生了的事件。Spring扩展了这个概念,创建了`org.springframework....

    Spring里的Async注解实现异步操作的方法步骤

    Spring里的Async注解实现异步操作的方法步骤 在 Spring 框架中,Async 注解是一个非常重要的功能,它可以帮助我们实现异步操作,从而提高系统的性能和响应速度。在本文中,我们将详细介绍 Spring里的Async注解实现...

    zTree异步加载Demo

    【zTree异步加载Demo】是一个基于SpringMVC框架和MySQL数据库实现的示例,它展示了如何使用zTree这一流行...通过学习和分析这个Demo,开发者可以更好地掌握zTree的异步加载机制,以及如何与SpringMVC和MySQL配合使用。

    SpringBoot异步

    在Spring Boot框架中,异步处理是提升应用性能和响应速度的一个重要机制。Spring Boot集成Spring Framework中的异步处理功能,使得我们可以将耗时的操作如数据库查询、远程调用等从主线程中分离出来,避免阻塞主线程...

    详解spring mvc对异步请求的处理

    在这个例子中,`DeferredResult`对象会在异步操作完成后设置结果,这通常发生在回调方法中。 ### 总结 Spring MVC的异步处理特性允许开发者在不阻塞主线程的情况下执行耗时操作,从而提高应用的响应速度和并发能力...

    使用Spring JMS轻松实现异步消息传递.docx

    5. 异步的信用评估完成后,结果可以通过回调或其他机制通知用户或系统。 通过这种方式,异步消息传递不仅提高了用户体验,还使得系统能够更高效地处理并发请求,增强了系统的可伸缩性和可靠性。在互联网环境中,...

    spring攻略 第2版

    Spring Security是Spring生态中的安全组件,提供了一套完整的权限管理和认证机制,能够帮助开发者实现用户登录、权限控制等功能,保障应用的安全性。另外,Spring Cloud扩展了Spring Boot的功能,提供了服务发现、...

    dwr异步操作

    在"dwr异步操作"这个主题中,我们需要关注以下几个关键知识点: 1. **DWR架构**:DWR由三部分组成:`Client-side API`、`Server-side Engine` 和 `Configuration`。Client-side API包含JavaScript库,允许前端与...

    11 spring IoC容器中事件event消息的发送和接收内部工作原理揭秘慕课专栏1

    这种工作原理使得Spring能够实现异步和同步的事件处理,增强了系统的灵活性和可扩展性。通过监听器模式,我们可以方便地增加或移除监听器,而不会影响到其他组件,这正是设计模式中的开闭原则。此外,由于事件和处理...

    spring源码包.zip

    包括`spring-context`、`spring-webmvc`、`spring-web`、`spring-beans`、`spring-core`、`spring-jdbc`、`spring-aop`、`spring-tx`、`spring-jms`以及`spring-expression`,通过源码解析,揭示其内部机制和设计...

    spring-amqp,spring-retry,spring-rabbit

    在分布式系统中,由于网络延迟、瞬时故障等原因,操作可能会失败,Spring Retry提供了一种声明式的方法来定义哪些方法应该被重试,以及在什么条件下重试。其主要特性包括: - 声明式重试:通过`@Retryable`注解,...

    spring boot 使用@Async实现异步调用方法

    在Spring Boot中,异步调用是一种提升应用性能的有效手段,尤其在处理耗时操作时。`@Async`注解是Spring提供的一个功能,用于将一个方法标记为异步执行,使得该方法不会阻塞调用者,而是立即返回,从而实现并发执行...

Global site tag (gtag.js) - Google Analytics