flame.liu 2023-08-24 13:00 采纳率: 75%
浏览 33
已结题

使用@DubboReference引用服务对象为空

在Spring cloud , Dubbo , nacos 使用@DubboReference 引用 服务对象,但是对象为空.
具体情况如下:

  1. Spring Boot使用的是3.1.2版本
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
  1. 使用Dubbo 和 nacos 具体引用如下:
<!--        dubbo: 远程调用-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
<!--        SpringCloud Ailibaba Nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2022.0.0.0-RC2</version>
        </dependency>
<!--        SpringCloud Ailibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2022.0.0.0-RC2</version>
        </dependency>
<!--        使用bootstrop.yml配置文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
  1. 定义有公共的api模块. 服务模块引用公共api模块. 订单项模块,代码如下:
@DubboService(interfaceClass = IOrderItemService.class)
@Component
public class OrderItemServiceImpl implements IOrderItemService{
 ... 略
}
  1. bootstrap.yml文件中,关于Dubbo的配置如下:
spring:
  application:
    name: orderDetail-api
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.3.21:8848 #nacos服务注册、发现地址
#dubbo配置
dubbo:
  scan:
    base-packages: com.shop.orderdetail.service.impl  #扫描服务所在的包
  protocol:
    name: dubbo   #协议名称和协议端口
    port: -1
    host: 192.168.3.21
  registry: #在spring cloud中心的注册地址
    address: spring-cloud://localhost
  1. 启动类添加了@EnableDiscoveryClient引用,代码如下:

    @SpringBootApplication
    @ComponentScan(basePackages = "com.shop")
    @EnableDiscoveryClient  //Dubbo可以发现服务
    public class OrderDetailApplication {
    略
    }
    
  2. 在购物车模块引用公共api模块,并且通过dubbo调用订单项模块的内容

@DubboReference(interfaceClass = IOrderItemService.class)
  private IOrderItemService orderItemService;//订单详情服务的远程引用

问题:
在nacos服务页面可以看到服务提供者列表,但是在调用上面orderItemService对象时,这个对象为空.
nacos是部署在本机的单机模式,所以也应该不存在网络问题.

  • 写回答

20条回答 默认 最新

  • 喝茶品人生 2023-08-24 14:45
    关注
    获得3.00元问题酬金

    你服务启动的时候看看dubbo日志有啥输出吗,启动类上确定添加@EnableDubbo注解没?

    评论

报告相同问题?

问题事件

  • 系统已结题 9月1日
  • 修改了问题 8月24日
  • 创建了问题 8月24日

悬赏问题

  • ¥20 dify的代码解释器工具和代码执行节点有什么区别?代码解释器工具怎么用?
  • ¥100 springboot2.7.x 整合 sharding 的问题
  • ¥15 如何通过命令行操作统信360安全浏览器?
  • ¥15 upload-labs-master第三关
  • ¥15 关于LT3758反激式负压电源,功率三极管烧毁的问题
  • ¥20 aruba ap305 CAP转IAP
  • ¥20 rockchip rk3588 ffmedia运行异常
  • ¥30 如何用 Java 简单系统设计?(相关搜索:服务器|面向对象设计|随机数)
  • ¥15 鸿蒙开发(关键词-开发环境)
  • ¥15 错误使用 mex Embedding metadata in the MEX file failed.