先创建 一个事件
package com.example.jpademo;
import org.springframework.context.ApplicationEvent;
public class Event_A extends ApplicationEvent {
public Event_A(Object source) {
super(source);
}
}
创建 一个事件监听器
package com.example.jpademo;
import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Component;
/**
* 事件监听器
*
* ApplicationListener
*
* Event_A : 监听的对象
* */
@Component
@EnableAsync // 开启异步处理
public class ApplicationListener_A implements ApplicationListener {
@Async // 开启异步处理
@Override
public void onApplicationEvent(Event_A a) {
System.out.println("线程名称 " + Thread.currentThread().getName());
Demo source = (Demo) a.getSource();
System.out.println("source = " + source.getId());
System.out.println("source = " + source.getName());
try {
Thread.currentThread().sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程执行完成:"+Thread.currentThread().getName());
}
}
写一个controller用于调用测试
package com.example.jpademo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
@Autowired
TopicEventPublisher publisher;
private ApplicationEventPublisher applicationEventPublisher;
@GetMapping("/push")
public void send(String topic){
Demo demo = new Demo();
demo.setId("11111");
demo.setName("张三");
applicationEventPublisher.publishEvent(new Event_A(demo));
}
}
这个Demo类只是一个测试传输数据用的一个对象而已,换成其他类或者字符串等数据类型也不会有影响
如果需要这个测试demo的话,可以添加我qq找我要2102266433
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)