创建一个dubbo整合springboot的微服务项目

简介: 创建一个dubbo微服务项目

创建一个dubbo微服务项目


首先创建一个父项目,vhukze-dubbo-parent-pom,依赖引入,打包类型是pom


<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>


在此项目下创建子项目,接口父项目,vhukze-dubbo-public-api-service,打包方式是pom


在接口父项目下创建子项目,服务提供者的接口项目,vhukze-dubbo-public-api-member-service,打包方式是pom,写一个接口,


package com.vhukze.api.member;
public interface IMemberService {
    String getUser();
}

在parent父项目下创建上面服务提供者接口项目的实现项目,vhukze-dubbo-api-member-service-impl,打包方式jar,引入要实现的接口项目依赖


<dependency>
            <artifactId>vhukze-dubbo-public-api-member-service</artifactId>
            <groupId>com.vhukze</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

写一个类实现接口,下面的Service注解是Dubbo里面的注解


package com.vhukze.api.member.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.vhukze.api.member.IMemberService;
@Service
public class MemberServiceImpl implements IMemberService {
    @Override
    public String getUser() {
        return "订单服务调用会员服务";
    }
}

写一个启动类

package com.vhukze;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * Hello world!
 *
 */
@SpringBootApplication
//开启dubbo服务,自动扫描Service注解的类,可以不在配置文件中添加扫包配置
@EnableDubbo
public class App 
{
    public static void main( String[] args )
    {
        SpringApplication.run(App.class);
    }
}


resources下application.yml配置文件

##服务器端口号
server:
  port: 8080
##注册到注册中心的名字
dubbo:
  application:
    name: member
  #采用协议的方式
  protocol:
    name: dubbo
    #发布dubbo端口号
    port: 20880
  #注册中心地址
  registry:
    address: zookeeper://127.0.0.1:2181
  scan:
  #实现类扫包范围
    base-packages: com.vhukze.api.member.impl


服务提供者写好了


创建服务消费者项目,在parent父项目下,vhuzke-dubbo-order-web,打包方式jar


resources下application配置文件


server:
  port: 8081
###dubbo 注册服务名称
dubbo:
  application:
    name: order
#  ###dubbo服务地址
#  protocol:
#    name: dubbo
#    port: 20880
  registry:
    address: zookeeper://localhost:2181
  consumer:
    timeout: 5000

写一个controller用来测试访问,Reference注解是从dubbo中注入实例,Service注解添加进来的实例。


这里直接注入实例到注解就行

package com.vhukze.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.vhukze.api.member.IMemberService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
class OrderController {
    @Reference
    private IMemberService iMemberService;
    @RequestMapping("/orderToMember")
    public String OrderToMember(){
        return iMemberService.getUser();
    }
}

启动zookeeper,访问上面的controller中的接口


http://localhost:8081/orderToMember


相关文章
|
2月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
68 2
|
1月前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
74 1
SpringBoot获取项目文件的绝对路径和相对路径
|
29天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
44 8
|
25天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
38 2
|
1月前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
39 1
|
2月前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
380 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
1月前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
47 2
|
1月前
|
前端开发 Java Spring
SpringBoot项目thymeleaf页面支持词条国际化切换
SpringBoot项目thymeleaf页面支持词条国际化切换
63 2
|
1月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
43 1
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。