SpringBoot——SpringBoot集成Dubbo

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: SpringBoot——SpringBoot集成Dubbo

1.写在前面


这里我来总结一下SpringBoot集成Dubbo的小案例,那么有关Dubbo的内容,就不多说了,可以参考下面这张图中的分栏中的文章。


下面,来说一说SpringBoot集成Dubbo分布式框架的一个思路:

首先了话,仍然需要三个工程。

·       接口工程:存放实体bean和业务接口

·       服务提供者:业务接口的实现类,同时将服务暴露,注册到注册中心zookeeper,调用数据持久层(dao

               a. pom文件中添加依赖(dubbo、注册中心zookeeper、接口工程)

               b. 配置服务提供者的dubbo核心配置文件。

·       服务消费者:处理浏览器客户端发来的请求,从注册中心调用服务提供者所提供的服务。

               a. pom文件中添加依赖(dubbo、注册中心zookeeper、接口工程)

               b. 配置服务消费者的dubbo核心配置文件。

那么,为了简单起步,这里我不再写实体bean了,也不再调用数据持久层了,就做一个简单的模拟案例吧。

2.案例分析


2.1 接口工程


业务接口

package com.szh.springboot.service;
/**
 *
 */
public interface StudentService {
    Integer queryAllStudentCount();
}


2.2 服务提供者


SpringBoot核心配置文件

# 配置内嵌tomcat的端口号和上下文跟
server.port=8081
server.servlet.context-path=/
# 配置Dubbo
# 声明dubbo服务提供者的名称:保证唯一性
spring.application.name=012-springboot-dubbo-provider
# 当前工程是一个服务提供者
spring.dubbo.server=true
# 设置注册中心的地址端口号
spring.dubbo.registry=zookeeper://localhost:2181

对业务接口方法的实现。@Component注解表示将该实现类加载到Spring容器中。@Service注解(这个注解和Spring下的@Service注解不一样,它是dubbo下属的直接)interface指的是暴露接口服务,version是版本号,timeout是超时时间。

package com.szh.springboot.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.szh.springboot.service.StudentService;
import org.springframework.stereotype.Component;
/**
 *
 */
@Component
@Service(interfaceClass = StudentService.class,version = "1.0.0",timeout = 15000)
public class StudentServiceImpl implements StudentService {
    @Override
    public Integer queryAllStudentCount() {
        return 666;
    }
}

pom文件

    <!-- 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>
        <!-- 注册中心zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.4</version>
        </dependency>
        <!-- 接口工程 -->
        <dependency>
            <groupId>com.szh.springboot</groupId>
            <artifactId>011-springboot-dubbo-interface</artifactId>
            <version>1.0.0</version>
        </dependency>

最后是SpringBoot项目启动入口类

package com.szh.springboot;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication //开启Spring注解配置
@EnableDubboConfiguration //开启Dubbo注解配置
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2.3 服务消费者

SpringBoot核心配置文件

# 配置内嵌tomcat的端口号和上下文跟
server.port=8080
server.servlet.context-path=/
# 配置Dubbo
# 声明dubbo服务消费者的名称:保证唯一性
spring.application.name=013-springboot-dubbo-consumer
# 设置注册中心的地址端口号
spring.dubbo.registry=zookeeper://localhost:2181

控制层方法。@Reference注解表示在这其中引用远程接口服务。

package com.szh.springboot.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.szh.springboot.service.StudentService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 *
 */
@Controller
public class StudentController {
    @Reference(interfaceClass = StudentService.class,version = "1.0.0",check = false)
    private StudentService studentService;
    @RequestMapping(value = "/student/count")
    public @ResponseBody Object studentCount() {
        Integer allStudentCount=studentService.queryAllStudentCount();
        return "学生总人数为:" + allStudentCount;
    }
}

pom文件和服务提供者是一样的,这里不再给出代码了。最后是SpringBoot项目启动入口类。

package com.szh.springboot;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication //开启Spring注解配置
@EnableDubboConfiguration //开启Dubbo注解配置
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2.4 启动测试!!!


因为我们这个案例是SpringBoot集成Dubbo,同时使用注册中心。所以启动的步骤是:

1.    启动zookeeper注册中心 zkServer.cmd(我这里为了考虑电脑性能,所以直接就在Windows上启动了,推荐是在Linux上启动)

2.    启动服务提供者(对应该工程的SpringBoot项目启动入口类)

3.    启动服务消费者(对应该工程的SpringBoot项目启动入口类)

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
13天前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
28 1
|
1月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
81 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
4月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
291 6
|
4月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
371 4
|
3月前
|
Dubbo Java Nacos
【实战攻略】破解Dubbo+Nacos+Spring Boot 3 Native打包后运行异常的终极秘籍——从零开始彻底攻克那些让你头疼不已的技术难题!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但使用Dubbo+Nacos+Spring Boot 3进行GraalVM native打包后常遇运行异常。本文剖析此问题及其解决策略:确认GraalVM版本兼容性;配置反射列表以支持必要类和方法;采用静态代理替代动态代理;检查并调整配置文件;禁用不支持的功能;利用日志和GraalVM诊断工具定位问题;根据诊断结果调整GraalVM配置。通过系统排查方法,能有效解决此类问题,确保服务稳定运行。
99 0
|
4月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
320 1
|
4月前
|
消息中间件 Java Kafka
Spring Boot与Apache Kafka Streams的集成
Spring Boot与Apache Kafka Streams的集成
|
4月前
|
消息中间件 Java Kafka
Spring Boot与Apache Kafka集成的深度指南
Spring Boot与Apache Kafka集成的深度指南
|
4月前
|
消息中间件 Java Kafka
Spring Boot与Kafka的集成应用
Spring Boot与Kafka的集成应用
|
4月前
|
消息中间件 Java 数据库连接
理解java的springboot+mybatisplus+dubbo+nacos+kafka这一套技术栈
理解java的springboot+mybatisplus+dubbo+nacos+kafka这一套技术栈
88 0