好消息:Dubbo & Spring Boot要來了

java那些事2019-01-11 20:59:11

點擊上方藍色文字關注↑↑↑↑↑


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+程序猿加入我們

       

       

長按關注,更多精彩!

戳原文,更多技術乾貨!
閱讀原文