事件模式二原创
# Spring事件机制
# Spring4.2 之前
# Spring事件
public class Event extends ApplicationEvent {
private String message;
public EventDemo(Object source) {
super(source);
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 事件监听器
@Component
public class EventLinstener implements ApplicationListener<Event> {
@Override
public void onApplicationEvent(Event demo) {
System.out.println("收到了监听的消息" + JSONObject.toJSONString(demo));
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 事件发布器
@Component
public class EventPublish {
/**
* 由spring创建注入
*/
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void publish(String message){
Event ev = new Event(this);
demo.setMessage(message);
applicationEventPublisher.publishEvent(ev);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Spring4.2+ 之后
# 使用方式
/**
* @program: spring-test
* @ClassName NewVersionEventListener
* @description: spring 4.2+ 之后不需要单独编写监听器类 只需要在SpringBean的方法上标记@EventListener注解即可
* @author: sizegang
* @Version 1.0
**/
@Component
public class NewVersionEventListener {
/**
* 发送邮件
*/
@Order(2)
@EventListener
public void processSendEmail(Event eventDemo){
System.out.println("发送邮件");
}
/**
* 添加积分
* Order 控制执行顺序
*/
@Order(1)
@EventListener
public void addPoints(Event eventDemo){
System.out.println("添加积分");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
编辑 (opens new window)
上次更新: 2022/05/01, 19:42:49