如何自定义事件(Spring事件机制浅谈)

来源:互联网 发布:c 获取数据库实例名 编辑:程序博客网 时间:2024/05/17 07:57

       LZ第一次在工作中接触Spring事件机制是项目中的定时任务,当Spring容器初始化完成时,把配置在数据库中的定时任务数据全部加载.此时只用定义一个类实现ApplicationListener<ContextRefreshedEvent>接口,并把该类交给Spring来管理,并在覆写的方法中实现自己的业务即可,因为ContextRefreshedEvent就是Spring的启动事件,Spring启动完成就会触发该事件.

       我们工作中也有许多时候需要自己定义事件与监听器,例如,在金融相关的项目中,当一笔借款或还款被审核成功后可能会推送消息,发站内信,发短信,记录流水等等,如果我们都通过注入对象调用对象对应的方法来处理,那么代码耦合度高.此时我们可以使用Spring的事件机制来处理.

   接口简介:

       ApplicationEvent : 事件,代表一个事情发生了,一个事件对象需要关联(事件源,事件关联的对象);

       ApplicationEventPublisher : 发布消息对象,负责发布消息,调度消息的监听器;

       ApplicationListener : 负责处理某一类消息;

   流程简介:

       首先创建一个监听器,并注册到Spring容器;

       其次,在某一个事件发生的时候,创建这个事件对应的消息对象(ApplicationEvent);

       最后,调用发布消息的方法去发布和调度监听器处理这个消息.

   下面是个简单的实践: