20201102 Spring中自定义事件及监听

Spring自定义事件及监听,底层是观察者模式

核心类:ApplicationEvent与ApplicationListener

ApplicationListener是Spring事件机制的一部分,与抽象类ApplicationEvent类配合来完成ApplicationContext的事件机制。

如果容器中存在ApplicationListener的Bean,当ApplicationContext调用publishEvent方法时,对应的Bean会被触发。这一过程是典型的观察者模式的实现。

1,自定义事件:NotifyEvent

public class NotifyEvent extends ApplicationEvent {

    private String email;
    private String content;

    public NotifyEvent(Object source) {
        super(source);
    }

    public NotifyEvent(Object source, String email,String content) {
        super(source);
        this.email=email;
        this.content=content;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

2,定义监听器NotifyListener:监听器通过@Component注解进行实例化,并在onApplicationEvent中打印相关信息。

@Component
public class NotifyListener implements ApplicationListener<NotifyEvent>{

    @Override
    public void onApplicationEvent(NotifyEvent notifyEvent) {
        System.out.println("邮件地址:"+notifyEvent.toString());
    }
}

3,发布事件

@RunWith(SpringRunner.class)
@SpringBootTest
public class ListenerTest {

    @Autowired
    private WebApplicationContext webApplicationContext;

    @Test
    public void testListener() {
        NotifyEvent event = new NotifyEvent("object", "abc@qq.com", "This is the content");
        webApplicationContext.publishEvent(event);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值