dubbo服务的对象 通过 Context 上下文获取 Bean

dubbo服务的对象 通过 Context 上下文获取 Bean

通常我们在使用spring的项目中注入dubbo服务时,会使用 @DubboReference 注解或通过xml配置的方式注入,

但是如果在非 spring管理下的工程中,如某个工具类中使用 dubbo 的 bean 就不能使用这个注解了.

那么我可以从 context上下文中获取到注入的bean, 当然前提是这个DubboBean 已经在spring上下文已经存在

注意: 通过springcontext上下文中获取 dubbo服务,大前提是dubbo已经被注册到spring中,如果你在一个工具模块中某个方法通过上下文获取到dubbo服务,那么你可以在调用该方法的服务中先引入此dubbo服务

步骤如下:
1.先从 springContext 中获取到 ReferenceAnnotationBeanPostProcessor
2. 从 ReferenceAnnotationBeanPostProcessor 得到 dubbo 的 ReferenceBeans 所有dubbo服务的列表
3. 比对我们想要的类,最终得到dubbo服务

获取代码如下:

   public static <T> T getDubboBean(Class<T> requiredType){
        ReferenceAnnotationBeanPostProcessor dubboContext = applicationContext.getBean(ReferenceAnnotationBeanPostProcessor.class);
        Collection<ReferenceBean<?>> referenceBeans = dubboContext.getReferenceBeans();
        for (ReferenceBean<?> referenceBean : referenceBeans) {
            Class<?> objectType = referenceBean.getObjectType();
            if(objectType == requiredType){
                return (T)referenceBean.getObject();
            }
        }
        return null;
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache Dubbo 是一款高性能、轻量级的开源 Java 服务框架。 功能特点: Apache Dubbo提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。 1、面向接口代理的高性能RPC调用 提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。 2、智能负载均衡 内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。 3、服务自动注册与发现 支持多种注册中心服务服务实例上下线实时感知。 4、高度可扩展能力 遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。 5、运行期流量调度 内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。 6、可视化的服务治理与运维 提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。 Apache Dubbo 更新日志: v2.6.10.1 注意 1. 脚本路由器 默认情况下不会激活 ScriptRouter。如果用户还想使用它,请在selfs spi文件中添加scriptRouterFactory。 看dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory 2. 基因调用 默认情况下不会激活本机 Java 反序列化。如果用户仍然想使用它,请设置dubbo.security.serialize.generic.native-java-enable为true环境。 3. 序列化块列表 中引入了嵌入式序列化块列表dubbo-common/src/main/resources/security/serialize.blockedlist。 如果用户想添加允许列表,请参考dubbo.security.serialize.allowedClassList。 4. 序列号检查 可以启用一个可选的检查器来检查消费者是否发送了允许的序列化 ID,消费者是否收到了与发送给提供者相同的序列化 ID。您可以设置serialization.security.check为true启用此功能。 更改列表 疏散不必要的例子 初始化、创建 资源成本 修复 TPS 限制器在动态配置下不起作用 解决懒惰模式下共享连接不共享的问题 在 FailoverClusterInvoker 中修复 methodName 和重试 修复 Dubbo qos 命令对离线提供程序不起作用 为netty4客户端添加socks5代理支持 支持高版本Nacos 添加一些序列化检查 修复 MonitorService 缺少 side=consumer 参数问题 修复 netty3 积压 修复反序列化漏洞

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值