写点什么

全网最透彻!Dubbo 整合 SpringBoot 详解,又通宵了

用户头像
极客good
关注
发布于: 刚刚

项目中共用的接口和 POJO 类,代码和之前一样,这里不再展开


3. 服务提供者

工程结构如下



引入依赖


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>


需要注意的是,根据 jdk 和 Spring Boot 版本的不同,dubbo-spring-boot-starter 的版本需要有根据的选择



dubbo 提供了 @Service 注解,可将类声明为提供方,省去了大量配置的麻烦


import com.alibaba.dubbo.config.annotation.Service;import com.zang.gmall.bean.UserAddress;import com.zang.gmall.service.UserService;import org.springframework.stereotype.Component;


import java.util.Arrays;import java.util.List;


@Service //属于 Dubbo 的 @Service 注解,非 Spring 作用:暴露服务 @Componentpublic class UserServiceImpl implements UserService {


@Overridepublic List<UserAddress> getUserAddressList(String userId) {//省略}}


通过属性配置的方式设置 application.properties


#当前服务/应用的名字 dubbo.application.name=user-service-provider


#注册中心的协议和地址 dubbo.registry.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181


#通信规则(通信协议和接口)dubbo.protocol.name=dubbodubbo.protocol.port=20880


#连接监控中心 dubbo.monitor.protocol=registry#开启包扫描,可替代 @EnableDubbo 注解 ##dubbo.scan.base-packages=com.zang.gmall


springboot 容器根据配置启动服务提供方,这里需要添加 @EnableDubbo 注解


import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;


// 开启基于注解的 dubbo 功能(主要是包扫描 @DubboComponentScan)// 也可以在配置文件中使用 dubbo.scan.base-package 来替代 @EnableDubbo@EnableDubbo


@SpringBootApplicationpublic class UserServiceProviderApplication {


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


提供方顺利启动


4. 服务消费者

消费者工程在初始化时设置为 web 项目,结构如下



引入和服务提供方同样的依赖,除此之外,添加 springboot web 模块的依赖。


dubbo 提供了 @Reference 注解,可替换 @Autowired 注解,用于引入远程服务


import com.alibaba.dubbo.config.annotation.Reference;import com.zang.gmall.bean.UserAddress;import com.zang.gmall.service.OrderService;import com.zang.gmall.service.UserService;import org.springframework.stereotype.Service;


import java.util.List;


@Servicepublic class OrderServiceImpl implements OrderService {


@ReferenceUserService userService;


@Overridepublic List<UserAddress> initOrder(String userId) {//代码省略}}


配置文件 application.properties


#避免和监控中心端口冲突,设为 8081 端口访问 server.port=8081

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
全网最透彻!Dubbo整合SpringBoot详解,又通宵了