博客
关于我
八:微服务调用组件Dubbo
阅读量:369 次
发布时间:2019-03-05

本文共 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); }}

转载地址:http://nreg.baihongyu.com/

你可能感兴趣的文章
SQL联表的方式(逗号, Left Join, Right Join)
查看>>
牛客网输入输出举例
查看>>
字符串初始化时的注意点
查看>>
软考相关试题
查看>>
顺序表的操作
查看>>
常量表达式
查看>>
POD类型
查看>>
const与常量,傻傻分不清楚~
查看>>
图解哈希表及其原理
查看>>
Head First设计模式——迭代器模式
查看>>
MongoDB版本及存储引擎区别
查看>>
shell echo单行和多行文字定向写入到文件中
查看>>
AtCoder Beginner Contest 100 题解
查看>>
【数据结构】可持久化线段树初步
查看>>
后缀树
查看>>
Java高性能编程之CAS与ABA及解决方法
查看>>
从BIO到Netty的演变
查看>>
《算法导论》第二章笔记
查看>>
HTML节点操作
查看>>
浏览器页面呈现过程
查看>>