1. 程式人生 > >spring boot整合dubbo

spring boot整合dubbo

spring boot整合dubbo

spring-boot-start-dubbo

spring-boot-start-dubbo,讓你可以使用spring-boot的方式開發dubbo程式。使dubbo開發變得如此簡單。

如何使用

1. clone 程式碼(可選,已經發布到中央倉庫,可以直接依賴中央倉庫的穩定版本)

git clone [email protected]:teaey/spring-boot-starter-dubbo.git

2. 編譯安裝(可選)

cd spring-boot-starter-dubbo
mvn clean install

3. 修改maven配置檔案(可以參考樣例spring-boot-starter-dubbo-sample)

  • 在Spring Boot專案的pom.xml增加parent:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.6.RELEASE</version>
</parent>
  • 在Spring Boot專案的pom.xml中新增以下依賴:

根據實際情況依賴最新版本

 <dependency>
     <groupId>io.dubbo.springboot</groupId>
     <artifactId>spring-boot-starter-dubbo</artifactId>
     <version>1.0.0</version>
 </dependency>
  • maven外掛用於打包成可執行的uber-jar檔案,新增以下外掛(這裡一定要載入需要打包成jar的mudule的pom中)
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.3.6.RELEASE</version>
</plugin>

4. 釋出服務

服務介面:

package cn.teaey.sprintboot.test;

public interface EchoService {
    String echo(String str);
}

在application.properties新增Dubbo的版本資訊和客戶端超時資訊,如下:

spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://192.168.99.100:32770
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=cn.teaey.sprintboot.test

在Spring Application的application.properties中新增spring.dubbo.scan即可支援Dubbo服務釋出,其中scan表示要掃描的package目錄

  • spring boot啟動
package cn.teaey.sprintboot.test;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Server {
    public static void main(String[] args) {
        SpringApplication.run(Server.class, args);
    }
}

  • 編寫你的Dubbo服務,只需要新增要釋出的服務實現上新增 @Service ,如下
package cn.teaey.sprintboot.test;

import com.alibaba.dubbo.config.annotation.Service;

@Service(version = "1.0.0")
public class EchoServerImpl implements EchoService {

    public String echo(String str) {
        System.out.println(str);
        return str;
    }
}

5. 消費Dubbo服務

  • 在application.properties新增Dubbo的版本資訊和客戶端超時資訊,如下:
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://192.168.99.100:32770
spring.dubbo.scan=cn.teaey.sprintboot.test

在Spring Application的application.properties中新增spring.dubbo.scan即可支援Dubbo服務釋出,其中scan表示要掃描的package目錄

  • spring boot啟動
package cn.teaey.sprintboot.test;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class Client {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(Client.class, args);
        AbcService bean = run.getBean(AbcService.class);
        System.out.println(bean.echoService.echo("abccc"));
    }
}

  • 引用Dubbo服務,只需要新增要釋出的服務實現上新增 @Reference ,如下:
package cn.teaey.sprintboot.test;

import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Component;

@Component
public class AbcService {
    @Reference(version = "1.0.0")
    public EchoService echoService;
}

6. 打包

可以直接執行Server或者Client啟動

可以通過mvn clean package 打包成可執行的uber-jar檔案