Spring来一发(七)Spring的事件通知机制

spring事件发送监听涉及3个部分:事件、发布者和监听者。

1)ApplicationEvent:表示事件本身,自定义事件需要继承该类,可以用来传递数据。

public class TestEvent extends ApplicationEvent {

    private String param;

    public TestEvent(String param) {
        super(param);
        this.param = param;
    }

    public String getParam() {
        return param;
    }

    public void setParam(String param) {
        this.param = param;
    }
}

2)ApplicationEventPublisherAware:事件发送器,通过实现这个接口,来触发事件。

@Component
public class TestEventPublisher implements ApplicationEventPublisherAware {

    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;

    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        this.applicationEventPublisher = applicationEventPublisher;
    }

    public void publishEvent(ApplicationEvent event) {
        applicationEventPublisher.publishEvent(event);
    }

}

3)ApplicationListener:事件监听器接口,事件的业务逻辑封装在监听器里面。

@Service
public class TestListener implements ApplicationListener<TestEvent> {

    @Async  // 异步处理
    public void onApplicationEvent(TestEvent event) {
        System.out.println(".......开始.......");
        System.out.println("业务逻辑处理...参数:" + event.getSource());
        System.out.println(".......结束.....");
    }
}

测试:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration({
    "classpath*:spring/spring.xml"
})
public class RunEventTest{

    @Resource
    private TestEventPublisher testEventPublisher;

    @Test
    public void test() {
        testEventPublisher.publishEvent(new TestEvent("abc"));
    }

}

 

参考资料:

https://www.cnblogs.com/fingerboy/p/9229164.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值