八:微服务调用组件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 List
list() { 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 List
list() { return userService.list(); }}

1.3 Open Feign迁移到Dubbo

服务提供方配置

在服务提供方添加以下注解:

@RestController@RequestMapping("/user")public class UserServiceImpl implements UserService {    @Autowired    private UserMapper userMapper;    @Override    @RequestMapping("/list")    public List
list() { 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 List
list(); @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 List
list() { 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); }}
上一篇:剑指 Offer 29. 顺时针打印矩阵
下一篇:剑指 Offer 67. 把字符串转换成整数

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年03月18日 01时14分00秒