• Spring 事件记录


    ⒈定义一个事件,继承 ApplicationEvent 接口。

     1 package cn.coreqi.eventdemo.event;
     2 
     3 import org.springframework.context.ApplicationEvent;
     4 
     5 public class ProjectEvent extends ApplicationEvent {
     6     private String id;
     7     private String projectStatus;
     8 
     9     public String getId() {
    10         return id;
    11     }
    12 
    13     public String getProjectStatus() {
    14         return projectStatus;
    15     }
    16 
    17     public ProjectEvent(Object source, String id, String projectStatus){
    18         super(source);
    19         this.id = id;
    20         this.projectStatus = projectStatus;
    21     }
    22 }

    2.定义一个监听者,实现 ApplicationListener,以下二选其一,需要注意Spring的版本,以1为优先选项。

      1.

     1 package cn.coreqi.eventdemo.listener;
     2 
     3 import cn.coreqi.eventdemo.event.ProjectEvent;
     4 import org.springframework.context.ApplicationListener;
     5 import org.springframework.stereotype.Component;
     6 
     7 @Component
     8 public class ProjectListener implements ApplicationListener<ProjectEvent> {
     9     @Override
    10     public void onApplicationEvent(ProjectEvent event) {
    11         System.out.println("接收到的项目id: " + event.getId());
    12         System.out.println("接受到的项目类型: " + event.getProjectStatus());
    13         //开始业务处理
    14     }
    15 }

      2.

    1     @EventListener
    2     public void registerProjectEventListener(ProjectEvent event){
    3         System.out.println("这是第二种监听方式");
    4         System.out.println("接收到的项目id: " + event.getId());
    5         System.out.println("接受到的项目类型: " + event.getProjectStatus());
    6         //开始业务处理
    7     }

    3.发布【这里是手动发布,一般是以quartz等任务框架去推动发布】

    1     public static void main(String[] args) {
    2         //SpringApplication.run(ApplicationMain.class, args);
    3         ConfigurableApplicationContext context = SpringApplication.run(ApplicationMain.class, args);
    4         context.publishEvent(new ProjectEvent(context,"7777","开始"));
    5     }

    【可选】4.异步

     1 package cn.coreqi.eventdemo.config;
     2 
     3 import org.springframework.context.annotation.Bean;
     4 import org.springframework.context.annotation.Configuration;
     5 import org.springframework.context.event.ApplicationEventMulticaster;
     6 import org.springframework.context.event.SimpleApplicationEventMulticaster;
     7 import org.springframework.core.task.SimpleAsyncTaskExecutor;
     8 
     9 @Configuration
    10 public class AsynchronousSpringEventsConfig {
    11 
    12     @Bean(name = "applicationEventMulticaster")
    13     public ApplicationEventMulticaster simpleApplicationEventMulticaster()
    14     {
    15         SimpleApplicationEventMulticaster eventMulticaster = new SimpleApplicationEventMulticaster();
    16         eventMulticaster.setTaskExecutor(new SimpleAsyncTaskExecutor());    //不是最优选择
    17         return eventMulticaster;
    18     }
    19 
    20 }
  • 相关阅读:
    反向传播BP算法
    有关一些求导的概念与神经网络梯度下降
    CS224n学习笔记(二)
    CS224n学习笔记(一)
    【模板】动态主席树
    【模板】静态主席树
    【模板】替罪羊树
    【模板】Splay
    洛谷 2387/BZOJ 3669 魔法森林
    洛谷 2622 关灯问题Ⅱ
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/16086953.html
Copyright © 2020-2023  润新知