Mock注入的Dubbo bean方法是什么
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍"Mock注入的Dubbo bean方法是什么",在日常操作中,相信很多人在Mock注入的Dubbo bean方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
千家信息网最后更新 2025年12月03日Mock注入的Dubbo bean方法是什么
这篇文章主要介绍"Mock注入的Dubbo bean方法是什么",在日常操作中,相信很多人在Mock注入的Dubbo bean方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Mock注入的Dubbo bean方法是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
最近用Spring cloud Alibaba重构了后端服务,在用Mockit作单元测试的过程中发现,还是会调用dubbo的远程接口。debug发现@Reference注解的接口和@MockBean的对象从ApplicationContext中取到了两个实例,那这样就自己再做一层,Spring启动完就将其修改为Mock代理实例。
代码如下
import org.apache.dubbo.config.annotation.Reference;import org.springframework.beans.BeansException;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.config.BeanPostProcessor;import org.springframework.context.ApplicationContext;import org.springframework.core.annotation.Order;import org.springframework.stereotype.Component;import java.lang.reflect.Field;import java.util.List;import java.util.Map;@Order@Componentpublic class MockerFactory implements BeanPostProcessor { @Autowired private ApplicationContext applicationContext; @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { //只处理自己业务包下的类 if (bean.getClass().getPackage() == null || !bean.getClass().getPackage().getName().contains("业务包名")) { return bean; } List fields = org.apache.commons.lang3.reflect.FieldUtils.getAllFieldsList(bean.getClass()); for (Field field : fields) { Reference reference = field.getAnnotation(Reference.class); Map beans = applicationContext.getBeansOfType(field.getType()); //将用到dubbo接口的地方替换为mock代理的实例 if (reference != null && beans.size() > 1) { field.setAccessible(true); setMockFieldToBean(bean, field, beans); } } return bean; } private void setMockFieldToBean(Object bean, Field field, Map beans) { for (Object fieldBean : beans.values()){ if(fieldBean.getClass().getName().contains("$MockitoMock$")){ try { field.set(bean, fieldBean); } catch (IllegalAccessException e) { throw new RuntimeException(e); } } } }} 到此,关于"Mock注入的Dubbo bean方法是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
方法
学习
实例
接口
业务
更多
代理
帮助
实用
接下来
两个
代码
单元
地方
对象
文章
注解
理论
知识
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
原神渠道服的服务器
数据库中db1
网络技术维护人员面试问题
服务器hdm管理
武大 网络安全 专业
益诚深圳软件开发
mc如何把最大服务器搞崩溃
网络安全备案材料
国家实行网络安全等级保护制
shopex连接不上数据库
数据库三类完整性实现技术
新乡华诚网络技术有限公司
网络安全攻防的套路
集团公司网络安全分为几级
信息网络安全工程专业
我们如何网络安全
网络安全保卫论文
网络安全知识竞赛题库及答案单选
阿里云虚拟主机数据库连接文件
河北数据库应用技术
太湖科技城互联网
揭阳软件开发难吗
手机应用软件开发公司哪家好
前锦网络技术信息有限公司苏州
软件开发项目经理讲话
orcal怎么查连接数据库
杭州网络安全公司服务商
软件开发公司会计账务处理
培养学生网络安全意识课件
苏州做软件开发的在哪租房