首页IT科技spring启动监听(Spring中的观察者模式_监听模式)

spring启动监听(Spring中的观察者模式_监听模式)

时间2025-06-15 20:12:19分类IT科技浏览4574
导读:需求: 执行完某些任务后多渠道发送通知消息...

需求:

执行完某些任务后多渠道发送通知消息

伪代码

消息体

package com.wanqi.pojo; /** * @Description TODO * @Version 1.0.0 * @Date 2022/10/28 * @Author wandaren */ public class MyMessage { private String title; private String msg; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } @Override public String toString() { return "MyMessage{" + "title=" + title + \ + ", msg=" + msg + \ + }; } public MyMessage(String title, String msg) { this.title = title; this.msg = msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }

事件对象

package com.wanqi.event; import org.springframework.context.ApplicationEvent; import org.springframework.stereotype.Component; /** * @Description TODO * @Version 1.0.0 * @Date 2022/10/28 * @Author wandaren */ public class OrderEvent extends ApplicationEvent { public OrderEvent(Object source) { super(source); } }

事件消费者(发送渠道)

package com.wanqi.event; import com.wanqi.pojo.MyMessage; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; /** * @Description TODO * @Version 1.0.0 * @Date 2022/10/28 * @Author wandaren */ @Component public class EmailMessage implements ApplicationListener<OrderEvent> { @Override public void onApplicationEvent(OrderEvent event) { final Object source = event.getSource(); if (source instanceof MyMessage) { System.out.println("邮件: " + ((MyMessage) source).getTitle() + "---" + ((MyMessage) source).getMsg()); } } }

事件消费者(发送渠道)

package com.wanqi.event; import com.wanqi.pojo.MyMessage; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; /** * @Description TODO * @Version 1.0.0 * @Date 2022/10/28 * @Author wandaren */ @Component public class WXMessage implements ApplicationListener<OrderEvent> { @Override public void onApplicationEvent(OrderEvent event) { final Object source = event.getSource(); if(source instanceof MyMessage){ System.out.println("微信: " + ((MyMessage) source).getTitle() + "---" +((MyMessage) source).getMsg()); } } }

事件生产者

package com.wanqi.service; import com.wanqi.event.OrderEvent; import com.wanqi.pojo.MyMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; /** * @Description TODO * @Version 1.0.0 * @Date 2022/10/28 * @Author wandaren */ @Service public class MyTest { ApplicationContext applicationContext; @Autowired public MyTest(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } public void msg(){ System.out.println("任务执行完成             。                  。      。          。                  。"); OrderEvent orderEvent = new OrderEvent(new MyMessage("发送消息啦", "xxxxxxxxxxxx")); //传播通道 applicationContext.publishEvent(orderEvent); } }

测试

package com.wanqi; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class DesignPatternApplicationTests { @Autowired com.wanqi.service.MyTest test; @Test void contextLoads() { test.msg(); } }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
a database that follows(A database of opensource HTTP proxies written in python: Django HTTP Proxy) linux作为服务器的优点有哪些(Linux服务器操作系统的优点有哪些)