随笔 - 1162  文章 - 0  评论 - 16  阅读 - 59万 

一、服务提供者

1、创建一个 boot-user-service-provider 的 SpringBoot 工程

2、加入 gmall-interface 依赖

<dependency>
    <groupId>com.njf.gmall</groupId>
    <artifactId>gmall-interface</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

这里对接口进行了修改:

public interface OrderService {

    /**
     * 初始化订单
     * @param userId
     */
    public List<UserAddress> initOrder(String userId);
}


public interface UserService {

    /**
     * 按照用户id返回所有的收货地址
     * @param userId
     * @return
     */
    public List<UserAddress> getUserAddressList(String userId);

}

3、提供 UserService 服务

@Component
public class UserServiceImpl implements UserService {

    @Override
    public List<UserAddress> getUserAddressList(String userId) {
        UserAddress address1 = new UserAddress(1"北京市昌平区宏福科技园综合楼3层""1""李老师""010-56253825""Y");
        UserAddress address2 = new UserAddress(2"深圳市宝安区西部硅谷大厦B座3层(深圳分校)""1""王老师""010-56253825""N");
        return Arrays.asList(address1,address2);
    }
}

二、服务消费者

1、创建一个 boot-order-service-consumer 的 SpringBoot 工程

2、加入 gmall-interface 依赖

<dependency>
    <groupId>com.njf.gmall</groupId>
    <artifactId>gmall-interface</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

3、准备调用 UserService 进行消费

三、SpringBoot 整合 Dubbo

1、整合服务提供者

(1)引入 spring-boot-starter 以及 dubbo 和 curator 的依赖

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

注意 starter 版本适配:

(2)在 application.properties 中配置提供者

dubbo.application.name=boot-order-service-consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181

dubbo.protocol.name=dubbo
dubbo.protocol.port=20882

dubbo.monitor.protocol=registry

属性说明:

  • application.name 就是服务名,不能跟别的 dubbo 提供端重复
  • registry.protocol 是指定注册中心协议
  • registry.address 是注册中心的地址加端口号
  • protocol.name 是分布式固定是 dubbo,不要改。
  • base-package 注解方式要扫描的包

(3)使用 dubbo 中的 @Service 暴露服务

@Component
@Service
public class UserServiceImpl implements UserService {

    @Override
    public List<UserAddress> getUserAddressList(String userId) {
        UserAddress address1 = new UserAddress(1"北京市昌平区宏福科技园综合楼3层""1""李老师""010-56253825""Y");
        UserAddress address2 = new UserAddress(2"深圳市宝安区西部硅谷大厦B座3层(深圳分校)""1""王老师""010-56253825""N");
        return Arrays.asList(address1,address2);
    }
}

(4)开启基于注解的 Dubbo 功能

@EnableDubbo
@SpringBootApplication
public class BootUserServiceProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootUserServiceProviderApplication.class, args);
    }

}

2、整合服务消费者

(1)引入 spring-boot-starter 以及 dubbo 和 curator 的依赖

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

(2)在 application.properties 中配置消费者

dubbo.application.name=boot-order-service-consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181

dubbo.monitor.protocol=registry

(3)使用 dubbo 中的 @Reference 注解引用服务

@Service
public class OrderServiceImpl implements OrderService {

    @Reference
    UserService userService;

    @Override
    public List<UserAddress> initOrder(String userId) {
        System.out.println("用户ID:" + userId);
        //1.查询用户的收货地址
        List<UserAddress> userAddressList = userService.getUserAddressList(userId);
        System.out.println("userAddressList = " + userAddressList);

        userAddressList.forEach(t -> System.out.println(t.getUserAddress()));
        System.out.println("调用完成!");
        return userAddressList;
    }
}

(4)开启基于注解的 Dubbo 功能

@EnableDubbo //开启基于注解的 dubbo 功能
@SpringBootApplication
public class BootOrderServiceConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootOrderServiceConsumerApplication.class, args);
    }

}

3、提供一个 Controller 进行测试

@RestController
public class OrderController {

    @Autowired
    OrderService orderService;

    @GetMapping(value = "/initOrder")
    public List<UserAddressinitOrder(@RequestParam("uid"String uid) {
        List<UserAddress> userAddresses = orderService.initOrder(uid);
        return userAddresses;
    }
}

4、测试

5、dubbo 注解

@Service、@Reference

如果没有在配置中写 dubbo.scan.base-package,还需要使用@EnableDubbo 注解

posted on   格物致知_Tony  阅读(137)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
点击右上角即可分享
微信分享提示

目录导航