`
young-2017
  • 浏览: 9484 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

spring 实现事件的异步处理

 
阅读更多
/**
 * 自定义事件
 * Created by szy on 2017/3/30.
 */
public class DemoEvent extends ApplicationEvent {

    private String msg;
    private List<String> list;

    public DemoEvent(Object source,String msg,List<String> list) {
        super(source);
        this.msg=msg;
        this.list = list;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }
}



/**
 * 自定义监听器
 * Created by szy on 2017/3/30.
 */
@Component
public class DemoListener implements ApplicationListener<DemoEvent> {

    @Async
    @Override
    public void onApplicationEvent(DemoEvent demoEvent) {
        try {
            System.out.println(Thread.currentThread().getName());
            //模拟业务耗时
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        String msg = demoEvent.getMsg();

        System.out.println("receive msg from demoevent publish : "+msg);
        System.out.println(
                "receive list from demoevent publish : "
                        +demoEvent.getList().toString());
    }
}


/**
 * 事件发布类
 *
 * Created by szy on 2017/3/30.
 */
@Component
public class DemoPublish {

    @Autowired
    private ApplicationContext applicationContext;

    public void publish(String msg, List<String> list){

        applicationContext.publishEvent(new DemoEvent(this,msg,list));

    }
}



/**
 * Created by szy on 2017/3/30.
 */
@RestController
public class DemoController {
    @Autowired
    private ApplicationContext ctx;

    @RequestMapping("/")
    public void test(){
        DemoPublish demoPublish = ctx.getBean(DemoPublish.class);
        List<String> list = new ArrayList<>();
        list.add("huahua");
        list.add("huahua1");
        list.add("huahua2");
        demoPublish.publish("hello young!",list);
        System.out.println("end");
    }

}



/**
*启动类
*/
@SpringBootApplication
@EnableAsync
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}




  • 大小: 99.9 KB
分享到:
评论

相关推荐

    使用Spring事件机制实现异步的方法

    * 事件机制可以实现异步处理,提高系统的性能和响应速度。 Spring事件机制的缺点包括: * 事件机制需要进行适当的配置和编码,增加了开发的复杂度。 * 事件机制需要进行适当的测试和调试,确保事件的正确发布和...

    Spring3.2异步处理http请求

    你可以通过分析这些文件,了解如何在实际项目中应用Spring 3.2的异步处理特性。 通过上述讲解,我们已经对Spring 3.2中的异步处理有了深入理解。正确地使用异步处理可以显著提高应用的性能,特别是在处理大量并发...

    Spring MVC异步模式

    本篇文章将深入探讨Spring MVC中的异步处理机制,以及如何通过源码理解和实现这一特性。 首先,我们需要了解Spring MVC异步模式的基本概念。在传统的同步处理中,请求到达服务器后,服务器会分配一个线程来处理该...

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

    本文将深入探讨在Spring中如何利用多线程和动态任务来实现异步处理,并分享一些实践心得。 首先,我们要理解Spring的异步处理机制。Spring通过`@Async`注解实现了方法级别的异步执行。当一个带有`@Async`的方法被...

    Spring Boot实现异步请求(Servlet 3.0)

    Spring Boot 实现异步请求是指在 Spring Boot 应用程序中使用异步处理机制来处理请求,以提高系统的性能和吞吐量。在 Spring 3.2 及以后版本中增加了对请求的异步处理,旨在提高请求的处理速度降低服务性能消耗。 ...

    spring异步调用的例子

    本示例将探讨如何在Spring中实现异步调用,并通过具体的例子帮助你理解和应用这一功能。 首先,我们需要了解Spring异步调用的基础概念。在Spring中,你可以通过`@Async`注解标记一个方法为异步执行。这个注解来自`...

    DWR集合Spring实现异步提交

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

    spring3.0异步

    虽然MyBatis本身并不直接支持异步操作,但我们可以利用Spring的异步特性在调用MyBatis的Mapper方法时实现异步。通常,我们会在服务层(Service)的方法上添加`@Async`注解,然后调用包含MyBatis查询的Mapper方法。...

    spring线程池(同步、异步).docx

    在Spring框架中,线程池的使用是实现并发和异步任务执行的关键工具。线程池的概念源于Java的`java.util.concurrent.ExecutorService`接口,它允许我们管理一组可重用的工作线程,以提高系统效率并减少资源消耗。...

    spring amqp实现异步消息队列的股票系统

    Spring AMQP是一个强大的框架,它将Apache RabbitMQ的消息中间件集成到Spring应用程序中,使得...通过对该项目的探索和实践,开发者能够更好地理解如何在Java应用中利用消息队列实现异步处理,提升系统的性能和稳定性。

    最全的Spring MVC注解例子,异步请求,错误处理

    在这个“最全的Spring MVC注解例子”中,我们将深入探讨Spring MVC的核心注解,以及如何实现异步请求处理和错误管理。 1. **Spring MVC核心注解** - `@Controller`:标记一个类为处理HTTP请求的控制器。这是Spring...

    基于Spring打造简单高效通用的异步任务处理系统

    对于任务的生产者,他们需要提供任务类型(通过bean ID表示的Spring实现类)和必要的任务参数。而任务的消费者,即执行任务的组件,需要能够解析这些参数并正确执行业务逻辑。此外,系统还需要有监控和日志记录机制...

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

    这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。下面我们将深入探讨Spring的`ApplicationContext`如何实现事件监听以及其在实际开发中的应用。 首先,`ApplicationContext`的...

    tomcat spring jms 异步消息传递入门实例

    本教程将带你逐步了解如何利用Tomcat、Spring和JMS(Java Message Service)构建一个简单的异步消息传递入门实例。 首先,让我们来理解一下核心组件: 1. **Tomcat**:这是一个流行的开源Java Servlet容器,用于...

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

    总的来说,这个压缩包中的代码片段展示了如何在Spring中利用`@Bean`注解和`initMethod`属性实现异步bean初始化,结合Sofaboot框架,提升应用程序的启动效率和并发性能。通过这些类的设计和交互,我们可以看到Spring...

    spring mvc ajax异步文件的上传和普通文件上传

    在Spring MVC框架中,文件上传是一项常见的功能,无论是普通的文件上传还是通过Ajax实现的异步文件上传,都为用户提供了更好的交互体验。本篇将详细讲解这两种方式的实现原理及步骤。 首先,让我们来理解一下普通...

    (源码)基于Spring Boot的异步接口网关系统.zip

    任务管理支持任务的提交、状态检查和结果返回,确保任务的异步处理。 数据库交互通过JPA与数据库进行交互,存储和管理任务及接口的相关信息。 线程管理支持同步接口的线程管理,确保接口的并发处理能力。 测试...

    Spring JMS使异步消息变得简单.doc

    通过对比传统JMS实现和Spring JMS,我们可以看到Spring JMS显著减少了开发者处理消息时的代码量和复杂性,使得异步消息处理的实现更为简洁。这不仅降低了出错的可能性,也使得代码更易于测试和维护。Spring JMS的...

    spring-batch分区处理示例

    5. **监听器和事件**:Spring Batch允许添加监听器来跟踪分区过程中的事件,如PartitionStepExecutionListener,以便在子任务开始、结束时记录日志或执行其他操作。 6. **配置文件**:通常,这些配置会在Spring ...

    Spring Async:实现异步调用示例.docx

    在Java世界中,Spring框架提供了一种强大的工具——Spring Async,用于实现应用程序中的异步处理。这个功能允许我们声明一个方法为异步的,Spring会自动将其放入一个后台线程中执行,而主线程则可以继续执行其他任务...

Global site tag (gtag.js) - Google Analytics