SpringBoot+Dubbo的註解方式整合例項

愛吃西瓜的邱某某發表於2020-10-07

1.在linux中各個包的bin目錄下啟動zookeeper註冊中心,monitor監控中心和tomcat,命令如下:
(1)zookeeper:./zkServer.sh start
(2) monitor:./server.sh start
(3)tomcat:./startup.sh

SpringBoot-dubbo-provider配置:
2.在ideal中建立springboot-dubbo-provider的spring包,
在provider的pom檔案中引入如下依賴:

		<dependency>
            <groupId>com.qiuzelin</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

其中,依賴為dubbo的介面依賴和springboot整合dubbo的依賴。
3.配置provider的application.yml檔案
dubbo的provider應用名,註冊中心名和地址,以及dubbo所用埠號。

dubbo:
  application:
    name: springboot-dubbo-provider
  registry:
    protocol: zookeeper
    address: 192.168.157.128:2181
  protocol:
    port: 28801

4.在main方法的類中加入@EnableDubbo註解:

@SpringBootApplication
@EnableDubbo
public class SpringbootDubboProviderApplication {

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

}

5.建立serviceimpl實現自interface介面(在本部落格Dubbo分散式框架實戰中的 interface介面):

package com.qiuzelin.springbootdubboprovider.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.qiuzelin.service.IUserService;
import org.springframework.stereotype.Component;

/**
 * Created with IntelliJ IDEA.
 *
 * @Auther: qiuzelin
 * @Date: 2020/09/30/11:05
 * @Description:
 */
@Component //表明這是spring元件,受到spring管理,因為下面的service是dubbo的service
@Service //dubbo的service,不是spring的service,用來發布服務
public class UserServiceImpl implements IUserService {

    @Override
    public String hello() {
        return "springboot+dubbo";
    }
}

注意:此處@Service註解為dubbo的包,用@Component來代替原spring的@Service註解,用來實現Spring管理。

SpringBoot-dubbo-consumer配置:
6.配置consumer的pom檔案:
加入dubbo的介面依賴和阿里巴巴旗下dubbo對springboot的依賴包

		<dependency>
            <groupId>com.qiuzelin</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

7.配置comsumer的application.yml檔案:
dubbo的consumer應用名稱,註冊中心名和地址等。

dubbo:
  application:
    name: consumer-boot-anotation
  registry:
    protocol: zookeeper
    address: 192.168.157.128:2181

8.同樣的,在main方法的類中加入@EnableDubbo註解:

@SpringBootApplication
@EnableDubbo
public class SpringbootDubboConsumerApplication {

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

}

9.在consumer的測試類中進行測試:

package com.qiuzelin.springbootdubboconsumer;

import com.alibaba.dubbo.config.annotation.Reference;
import com.qiuzelin.service.IUserService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringbootDubboConsumerApplicationTests {

    @Reference
    private IUserService iUserService;

    @Test
    void contextLoads() {
            System.out.println(iUserService.hello());
            System.in.read();      
    }

}

其中@Reference用來注入分散式的遠端服務物件,要配合dubbo配置使用。

10.執行provider的main方法和consumer的test方法:
登入dubbo的虛擬機器發布地址192.168.157.128:8088後發現後臺服務有服務提供者,服務消費者和監控中心:
在這裡插入圖片描述
其中:
監控中心地址來自虛擬機器地址(192.168.157.128:7070),
服務提供者(192.168.157.1:28801)和服務消費者(192.168.157.1)地址來自本機地址。

相關文章