spring中的事件机制

事件机制类似于消息队列mq,在spring中也有自己的事件机制,也就是发布订阅模式,在项目中用到的也是很多,可以让子业务与主业务解耦合。大大加强代码的可扩展性。
就是这样一个流程
直接上代码,来个小demo
注册用户的时候给他发送短信,并且赠送他代金券
首先就是最基本的User类:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private Integer id;

    private String name;

}

定义一个事件:

public class UserEvent extends ApplicationEvent {
    /**
     * userEvent为事件本身
     * @param source 事件的资源,也就是User对象
     */
    public UserEvent(Object source) {
        super(source);
    }

    //为了方便就直接重写并强转了
    @Override
    public User getSource() {
        return (User)super.getSource();
    }
}

然后事件的发布者(为了方便就写在了controller中):

@RestController
@RequestMapping("register")
public class registerController {
	//事件的发布者,直接用autowired注入就可以了
    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;

    @GetMapping
    public String register(){
        User user = new User(1,"王");
        UserEvent userEvent = new UserEvent(user);
        //发布事件
        applicationEventPublisher.publishEvent(userEvent);
        return "success";
    }
}

最后就是订阅者了:

@Component
public class UserListener {

    //事件的先后顺序
    @Order(1)
    //监听的事件类型
    @EventListener(UserEvent.class)
    public void sendSSM(UserEvent event){
        User user = event.getSource();
        System.out.println("hello:"+user.getName());
    }

    @Order(2)
    @EventListener(UserEvent.class)
    public void give(UserEvent event){
        User user = event.getSource();
        System.out.println("give:"+user.getId()+" gifts");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值