- springboot搭建的微服务之间在业务场景上会出现相互调用的情况,因此需要互相调用。
- 使用dubbo直接调用对方的service
- 使用对方项目依赖
<dependency> <groupId>com.sun</groupId> <artifactId>service-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--dubbo依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> </exclusions> <version>2.6.2</version> </dependency>
- 添加dubbo配置文件
<!-- 配置可参考 http://dubbo.apache.org/zh-cn/docs/user/quick-start.html --> <!-- 服务提供方应用名,用于计算依赖关系 --> <dubbo:application name="user-service" owner="user-service"/> <!-- 定义 zookeeper 注册中心地址及协议 --> <dubbo:registry protocol="zookeeper" address="${dubbo.zookeeper}" client="zkclient"/> <!-- 定义 Dubbo 协议名称及使用的端口,dubbo 协议缺省端口为 20880,如果配置为 -1 或者没有配置 port,则会分配一个没有被占用的端口 --> <dubbo:protocol name="dubbo" port="${dubbo.port}" charset="UTF-8" threadpool="cached" threads="500" dispatcher="message"/> <!-- 对方项目声明需要暴露的服务接口 --> <dubbo:service interface="com.sun.service.UserService" ref="userServiceImpl" timeout="60000"/> <bean id="userServiceImpl" class="com.sun.service.Impl.UserServiceImpl" /> <!--消费服务接口--> <dubbo:reference id="userService" interface="com.sun.service.UserService" timeout="60000" check="false" 在自己的service中依赖注入对方的service
- 在自己的service中依赖注入对方的service
@Autowired private UserService userService;
- 构造入参,使用对方的返回对象接收返回值
User user = userService.getUserByUserId(int UserId);