Spring中的事件驱动模型(机制)

简介:事件驱动模型是观察者模式的另一种形态,观察者相当于监听器,被观察者相当于事件源

目的:事件源产生事件,监听器监听事件

总结:事件发生-事件处理模型

以用户注册时候,要发送邮件和发送短信举例说明

定义一个事件

/**
 * spring会自动将该事件注册到applicationContext中
 * 这里有通过构造方法将事件源传递进去,有些场景可以用到,本例子中的事件源是UserService
 */
public class UserRegisterEvent extends ApplicationEvent
{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    //注册用户对象
    private UserBean user;

    /**
     * 重写构造函数
     * @param source 发生事件的对象
     * @param user 注册用户对象
     */
    public UserRegisterEvent(Object source,UserBean user) {
        super(source);
        this.user = user;
    }

    public UserBean getUser() {
        return user;
    }
    
    
}

定义事件监听

@Component
public class RegisterListener implements ApplicationListener<UserRegisterEvent>
{
    /**
     * 实现监听
     * @param userRegisterEvent
     */
    @Override
    @Async
    public void onApplicationEvent(UserRegisterEvent userRegisterEvent) {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //获取注册用户对象
        UserBean user = userRegisterEvent.getUser();
        //../省略逻辑
        //输出注册用户信息
        System.out.println("注册信息,用户名:"+user.getName()+",密码:"+user.getPassword());
    }
}

猜你喜欢

转载自www.cnblogs.com/moris5013/p/11119901.html