SpringBoot集成Dubbo

SpringBoot集成dubbo简单测试:查询所有学生数据

一、定义接口模块

1、定义学生实体bean

package com.inter.pojo;
import java.io.Serializable;

public class Student implements Serializable {
	private Integer id ;
	private String stuName ;
	private Integer age ;
	// 省略get、set方法
}

2、定义业务层接口

package com.inter.service;
import com.inter.pojo.Student;
import java.util.List;

public interface UserService {
	List<Student> getStudentList();
}

二、SpringBoot服务提供者模块

1、pom.xml所需依赖

    <!--springboot框架web项目启动依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--dubbo集成springboot启动依赖-->
    <dependency>
        <groupId>com.alibaba.spring.boot</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.0.0</version>
    </dependency>

    <!--注册中心-->
    <dependency>
        <groupId>com.101tec</groupId>
        <artifactId>zkclient</artifactId>
        <version>0.10</version>
    </dependency>

    <!--接口模块gav坐标-->
    <dependency>
        <groupId>com.interface</groupId>
        <artifactId>interface</artifactId>
        <version>1.0</version>
    </dependency>

    <!--MysqL驱动-->
    <dependency>
        <groupId>MysqL</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!--mybatis集成springboot起步依赖-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>

2、在application.properties中配置应用上下文端口号、地址,数据源信息,dubbo相关配置

设置端口号,上下文路径
server.port=8081
server.servlet.context-path=/

配置数据源
spring.datasource.driver-class-name=com.MysqL.cj.jdbc.Driver
spring.datasource.url=jdbc:MysqL://localhost:3306/springboot?useSSL=true&characterEncoding=utf8&useUnicode=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

指定mapper.xml文件的位置
mybatis.mapper-locations=src/main/resources/mapper/*.xml

指定应用模块名称
spring.application.name=provider
该模块是dubbo服务提供者
spring.dubbo.server=true
指定注册中心地址
spring.dubbo.registry=zookeeper://192.168.202.128:2181

3、编写代码
首先得了解两个重要的注解:
@Service,暴露服务提供者的服务,该注解不是Spring中的注解,而是dubbo提供的注解
@EnabledubboConfiguration,扫描SpringBoot启动类下dubbo提供的注解(没有它@Service标识的服务不会被注册注册中心)

@Component // 将实例装载进容器中
@Service(interfaceClass = UserService.class)
public class UserServiceImpl implements UserService {

	@Autowired
	private UserMapper userMapper ;

	@Override
	public List<Student> getStudentList() {

		return userMapper.getStudentList();
	}
}

说明:Mybatis持久层代码简单,此处不予列出!

启动类:

@SpringBootApplication
@EnabledubboConfiguration  // 开启识别dubbo的注解
public class DemoApplication {

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

三、服务消费者

1、pom.xml所需依赖:服务提供者的所需依赖,去除数据源后的依赖
2、application.properties配置

设置端口号,上下文根路径
server.port=8082
server.servlet.context-path=/

应用名称
spring.application.name=consumer
指定注册中心
spring.dubbo.registry=zookeeper://192.168.202.128:2181

3、进行消费:获取服务提供者提供的服务
首先得知道的一个注解:@Reference,dubbo提供的注解,用来引用服务提供者提供的接口实现类

@Controller
@RequestMapping("/user")
public class UserController {

	@Reference(interfaceClass = UserService.class)
	private UserService userService ;

	@RequestMapping("/list")
	@ResponseBody
	public List<Student> getStuList(){
		return userService.getStudentList();
	}
}

启动类和服务提供者一样,需要在启动类上添加@EnabledubboConfiguration注解

四、测试

首先启动服务提供者,然后启动服务消费者,根据@RequestMapping资源映射发起请求,结果如下

image

说明:SpringBoot集成dubbo,需要将tomcat服务器以及zookeeper注册中心安装在linux虚拟机中,此过程如有疑惑者,请查阅其他资料

相关文章

在网络请求时,总会有各种异常情况出现,我们需要提前处理这...
作者:宇曾背景软件技术的发展历史,从单体的应用,逐渐演进...
hello,大家好呀,我是小楼。最近一个技术群有同学at我,问我...
 一个软件开发人员,工作到了一定的年限(一般是3、4年左右...
当一个服务调用另一个远程服务出现错误时的外观Dubbo提供了多...
最近在看阿里开源RPC框架Dubbo的源码,顺带梳理了一下其中用...