SpringBoot+Dubbo的注解方式整合实例

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)地址来自本机地址。

猜你喜欢

转载自blog.csdn.net/weixin_41570890/article/details/108948932