applicationContext
程序员文章站
2022-03-03 13:17:48
...
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);
}
}
}
推荐阅读
-
spring中通过ApplicationContext getBean获取注入对象的方法实例
-
Spring通过ApplicationContext主动获取bean的方法讲解
-
JSP Spring ApplicationContext的国际化支持
-
spring源码分析系列5:ApplicationContext的初始化与Bean生命周期
-
spring源码分析6: ApplicationContext的初始化与BeanDefinition的搜集入库
-
从一个简单的例子看spring ApplicationContext上下文隔离
-
spring5 源码深度解析-----ApplicationContext容器refresh过程
-
JSP Spring ApplicationContext的国际化支持
-
SpringBoot实战之ApplicationContext
-
Error starting ApplicationContext.错误解决