applicationContext

1. 获取Bean对象

applicationContext.getBean(beanName, bean.class);

/** 
 *  示例
 *    1. 定义一个接口
 *    2. 实现类实现
 *    3. 通过context获取类对象,调用方法
 */

public interface SendMsgHandle {
    void sendMsg(String msg);
}

@Service("statusUpdateMsgHandler")
@Slf4j
public class StatusUpdateMsgHandler implements SendMsgHandle{
 
    @Override
    public void sendMsg(String msg) {
        log.info("receive msg: {}", msg);
    }
   
}

SendMsgHandle handler = webApplicationContext.getBean("statusUpdateMsgHandler", SendMsgHandle.class);
handler.sendMsg(JSON.toJSONString("test"));

2. 发布消息事件
 

// obj为传递的事件对象
applicationContext.publishEvent(Object obj);

// 订阅消息事件:使用注解@EventListener,该注解默认是同步执行的,若要实现异步执行,需加@Async。方法参数为事件对象,指明要监听订阅的事件。
public void execute(Object obj) {}


====================================== 分隔符 ======================================
/** 
 *  示例 
 *    1. 创建
 *    2. 接收   
 */

// 1.创建要发送的内容对象
OrderDTO orderDTO = OrderDTO.builder().no("6853738696568484").build();
// 发送创建订单成功相关消息
applicationContext.publishEvent(orderDTO);

// 2.监听接收
@Component
@Slf4j
public class OrderDTOListener {

    @EventListener
    @Async("async_thread_pool_bean_name")
    public void execute(OrderDTO orderDTO) {
        // 发送创建订单成功相关消息
        if (Objects.nonNull(orderDTO) && StringUtils.isNotEmpty(orderDTO.getNo())){
            String jsonData = JSONObject.toJSONString(orderDTO);
            log.info("接收: {}", jsonData);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值