
八:微服务调用组件Dubbo
发布日期:2021-05-08 03:55:23
浏览次数:12
分类:精选文章
本文共 4354 字,大约阅读时间需要 14 分钟。
Spring Cloud与Dubbo整合配置指南
1. Spring Cloud整合Dubbo
1.1 provider端配置
为了实现Spring Cloud与Dubbo的无缝集成,我们需要先在提供方进行相应的配置。以下是具体的实现步骤:
引入依赖
在项目根目录的pom.xml
中添加以下依赖:
com.alibaba.cloud spring-cloud-starter-dubbo com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
application.yml配置
在application.yml
中添加以下配置:
dubbo: scan: base-packages: com.tuling.mall.user.service protocol: name: dubbo port: -1 registry: address: spring-cloud://127.0.0.1:8848spring: application: name: spring-cloud-dubbo-provider-user main: allow-bean-definition-overriding: true cloud: nacos: discovery: server-addr: 127.0.0.1:8848
服务实现类配置
在服务实现类上使用@DubboService
注解,确保服务能够被正确暴露:
import org.springframework.stereotype.Component;import com.alibaba.dubbo.service.DubboService;@Component@DubboServicepublic class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public Listlist() { return userMapper.list(); } @Override public User getById(Integer id) { return userMapper.getById(id); }}
1.2 consumer端配置
引入依赖
在消费方项目中添加以下依赖:
org.springframework.boot spring-boot-starter-web com.alibaba.cloud spring-cloud-starter-dubbo com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.cloud spring-cloud-starter-openfeign
application.yml配置
在application.yml
中添加以下配置:
dubbo: cloud: subscribed-services: spring-cloud-dubbo-provider-user protocol: name: dubbo port: -1 registry: address: spring-cloud://127.0.0.1:8848spring: application: name: spring-cloud-dubbo-consumer-user main: allow-bean-definition-overriding: true cloud: nacos: discovery: server-addr: 127.0.0.1:8848
服务消费方引入依赖
在消费方中使用@DubboReference
注解引入服务:
@RestController@RequestMapping("/user")public class UserController { @DubboReference private UserService userService; @Autowired private RestTemplate restTemplate; @Bean @LoadBalanced @DubboTransported public RestTemplate restTemplate() { return new RestTemplate(); } @RequestMapping("/list") public Listlist() { return userService.list(); }}
1.3 Open Feign迁移到Dubbo
服务提供方配置
在服务提供方添加以下注解:
@RestController@RequestMapping("/user")public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override @RequestMapping("/list") public Listlist() { return userMapper.list(); } @Override @RequestMapping("/getById/{id}") public User getById(@PathVariable("id") Integer id) { return userMapper.getById(id); }}
服务消费方配置
在消费方中使用@DubboTransported
注解:
@FeignClient(value = "spring-cloud-dubbo-provider-user-feign", path = "/user")@DubboTransported(protocol = "dubbo")public interface UserDubboFeignService { @RequestMapping("/list") public Listlist(); @RequestMapping("/getById/{id}") public User getById(@PathVariable("id") Integer id);}@FeignClient(value = "spring-cloud-dubbo-provider-user-feign", path = "/user")public interface UserFeignService { @RequestMapping("/list") public List list(); @RequestMapping("/getById/{id}") public User getById(@PathVariable("id") Integer id);}
调用对象配置
在控制器中使用@DubboReference
注解:
@RestController@RequestMapping("/user")public class UserController { @DubboReference private UserService userService; @Autowired @DubboTransported private UserFeignService userFeignService; @Autowired private UserDubboFeignService userDubboFeignService; @Autowired private RestTemplate restTemplate; @Bean @LoadBalanced @DubboTransported public RestTemplate restTemplate() { return new RestTemplate(); } @RequestMapping("/list") public Listlist() { return userFeignService.list(); } @RequestMapping("/list2") public List list2() { return userDubboFeignService.list(); } @RequestMapping("/list3") public List list3() { return restTemplate.getForObject("http://spring-cloud-dubbo-provider-user-feign/user/list", List.class); }}
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月18日 01时14分00秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
springboot通过控制层跳转页面404
2019-03-05
idea2020 没有 tomcat server
2019-03-05
jq动态修改元素的onclick属性的值
2019-03-05
为什么讨厌所谓仿生AI的说法
2019-03-05
ORACLE 客户端工具
2019-03-05
Elasticsearch下载慢?分享百度云下载-ELK
2019-03-05
云服务器springboot jar项目开启jmx remote监控-解决无法连接的问题
2019-03-05
文件上传-FileUpload
2019-03-05
快速排序
2019-03-05
Linux下 访问mysql数据库
2019-03-05
Ubuntu18 把wlp3s0 改成 wlan0
2019-03-05
leetcode-二维数组中的查找-49
2019-03-05
Pyinstaller打包的exe文件过大的解决方法
2019-03-05
Linux的软链接跟Windows快捷方式一样?
2019-03-05
更改github的默认语言类型
2019-03-05
修改ubuntu镜像源mirrors为阿里源
2019-03-05