查看原文
其他

好消息:Dubbo & Spring Boot要来了

2018-01-25 JGRoad Java技术栈


Duboo和Spring Boot都是非常优秀的框架,现在它们要结合了。为了简化Dubbo开发集成,阿里Dubbo团队将发布基于Spring Boot的版本,可快速上手Dubbo的分布式开发,并提供了一些准生产环境特性(如安全、健康检查、配置外部化等……)。

如果你还不知道什么是Dubbo,可以去Dubbo官网(http://dubbo.io)花点时间了解下。

下面来看看Dubbo & Spring Boot集成是如何做的!

用过Dubbo的都知道,分布式场景中有两个重要的角色,一个是提供者,一个是消费者。

如何实现提供者服务

1、定义一个提供者接口:DemoService

  1. public interface DemoService {

  2.    String sayHello(String name);

  3. }

2、实现一个提供者,并实现DemoService接口

  1. @Service(

  2.        version = "1.0.0",

  3.        application = "${dubbo.application.id}",

  4.        protocol = "${dubbo.protocol.id}",

  5.        registry = "${dubbo.registry.id}"

  6. )

  7. public class DefaultDemoService implements DemoService {

  8.    public String sayHello(String name) {

  9.        return "Hello, " + name + " (from Spring Boot)";

  10.    }

  11. }

注意,提供者服务由注解@Service定义,其参数配置在application文件中,见下方定义。

3、然后在appliation文件中添加配置

  1. # Spring boot application

  2. spring.application.name = dubbo-provider-demo

  3. server.port = 9090

  4. management.port = 9091

  5. # Base packages to scan Dubbo Components (e.g @Service , @Reference)

  6. dubbo.scan.basePackages  = com.alibaba.boot.dubbo.demo.provider.service

  7. # Dubbo Config properties

  8. ## ApplicationConfig Bean

  9. dubbo.application.id = dubbo-provider-demo

  10. dubbo.application.name = dubbo-provider-demo

  11. ## ProtocolConfig Bean

  12. dubbo.protocol.id = dubbo

  13. dubbo.protocol.name = dubbo

  14. dubbo.protocol.port = 12345

  15. ## RegistryConfig Bean

  16. dubbo.registry.id = my-registry

  17. dubbo.registry.address = N/A

4、最后再提供一个提供者服务启动类

  1. @SpringBootApplication

  2. public class DubboProviderDemo {

  3.    public static void main(String[] args) {

  4.        SpringApplication.run(DubboProviderDemo.class,args);

  5.    }

  6. }

更多提供者示例代码可参考:https://github.com/dubbo/dubbo-spring-boot-project/tree/master/dubbo-spring-boot-samples/dubbo-spring-boot-sample-provider

如何实现消费者服务

消费者服务用来消费提供者提供的服务,也就是消费者服务调用提供者的服务进行操作。

消费者需要注入提供者的接口对应的Spring Bean实例。

1、定义一个消费者

  1. @RestController

  2. public class DemoConsumerController {

  3.    @Reference(version = "1.0.0",

  4.            application = "${dubbo.application.id}",

  5.            url = "dubbo://localhost:12345")

  6.    private DemoService demoService;

  7.    @RequestMapping("/sayHello")

  8.    public String sayHello(@RequestParam String name) {

  9.        return demoService.sayHello(name);

  10.    }

  11. }

@Reference注解用来注入提供者服务的Spring Bean实例,其参数配置依然在application文件中,见下方定义。

2、然后在appliation文件中添加配置

  1. # Spring boot application

  2. spring.application.name = dubbo-consumer-demo

  3. server.port = 8080

  4. management.port = 8081

  5. # Dubbo Config properties

  6. ## ApplicationConfig Bean

  7. dubbo.application.id = dubbo-consumer-demo

  8. dubbo.application.name = dubbo-consumer-demo

  9. ## ProtocolConfig Bean

  10. dubbo.protocol.id = dubbo

  11. dubbo.protocol.name = dubbo

  12. dubbo.protocol.port = 12345

3、最后再提供一个消费者服务启动类

  1. @SpringBootApplication(scanBasePackages = "com.alibaba.boot.dubbo.demo.consumer.controller")

  2. public class DubboConsumerDemo {

  3.    public static void main(String[] args) {

  4.        SpringApplication.run(DubboConsumerDemo.class,args);

  5.    }

  6. }

更多消费者示例代码可参考:https://github.com/dubbo/dubbo-spring-boot-project/blob/master/dubbo-spring-boot-samples/dubbo-spring-boot-sample-consumer

先启动提供者启动类,再启动消费者启动类,通过访问消费者控制层可调用提供者服务进行消费。

更多与Spring Boot集成的新特性可参考官方文档

项目地址:https://github.com/dubbo/dubbo-spring-boot-project

看完是不是觉得上手非常简单了,Spring Boot真是快速开发神器。不过,目前该项目还未正式发布,敬请期待,我们也将会持续关注,如果有更进一步消息会及时通知到大家。

本文转自微信公众号“架构之路”

福利1:免费领取架构师四阶段学习资料

福利2:免费领取全套Java面试题及答案

如果对你有用,欢迎分享到朋友圈

目前已有10000+程序猿加入我们

       

       

长按关注,更多精彩!

戳原文,更多技术干货!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存