简单的Dubbo与Vue整合的示例步骤

一、后端(基于Dubbo)搭建

  1. 环境准备
    确保安装好Java开发环境(JDK)、Maven(用于项目构建管理)等基础工具。
  2. 创建Dubbo服务提供者项目
    • 使用Spring Boot(方便集成Dubbo等各种组件)创建一个新的Maven项目。在pom.xml文件中引入Dubbo相关依赖,例如:
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>(对应版本号)</version>
</dependency>
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-registry-zookeeper</artifactId>
    <version>(对应版本号)</version>
</dependency>

这里引入了Dubbo的Spring Boot启动器以及使用Zookeeper作为注册中心的依赖,实际应用中可根据选择的注册中心来调整。
- 创建服务接口,定义服务提供的方法,比如创建一个UserService接口:

public interface UserService {
    User getUserById(Integer id);
}
- 实现服务接口,创建对应的服务实现类,并使用Dubbo的`@Service`注解(注意是Dubbo的`org.apache.dubbo.config.annotation.Service`)将其标注为Dubbo服务提供者,例如:
import org.apache.dubbo.config.annotation.Service;
@Service
public class UserServiceImpl implements UserService {
    @Override
    public User getUserById(Integer id) {
        // 这里可以编写从数据库等获取用户信息的逻辑,此处简单返回示例数据
        User user = new User();
        user.setId(id);
        user.setName("示例用户");
        return user;
    }
}
- 配置Dubbo相关属性,在`application.properties`(或`application.yml`)中配置注册中心地址、服务端口等信息,例如:
# 应用名称
spring.application.name=dubbo-provider
# Dubbo服务端口
server.port=8081
# 配置Zookeeper注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
  1. 创建Dubbo服务消费者项目(可选,如果需要在后端内部调用其他Dubbo服务的情况)
    同样使用Spring Boot创建项目,引入Dubbo依赖,在需要调用服务的地方,通过@Reference注解(Dubbo的org.apache.dubbo.config.annotation.Reference)注入服务接口,然后就可以调用对应的服务方法了,例如:
import org.apache.dubbo.config.annotation.Reference;
@RestController
public class TestController {
    @Reference
    private UserService userService;

    @GetMapping("/getUser/{id}")
    public User getUser(@PathVariable Integer id) {
        return userService.getUserById(id);
    }
}

二、前端(基于Vue)搭建

  1. 环境准备
    安装Node.js环境,通过命令行工具(如npm或者yarn)创建Vue项目,可以使用vue-cli脚手架工具来快速创建,例如使用命令:
vue create vue-dubbo-project

按照提示选择相应的配置(如是否使用TypeScript、CSS预处理器等)来生成项目基础结构。
2. 编写Vue组件来调用后端服务
在Vue项目中,创建组件(例如User.vue),在组件的methods中通过axios(需先安装axios库用于发送HTTP请求,npm install axios)等方式来向后端发送请求获取数据,示例代码如下:

<template>
  <div>
    <button @click="getUser">获取用户信息</button>
    <div v-if="user">{{ user.name }}</div>
  </div>
</template>

<script>
import axios from 'axios';
export default {
  data() {
    return {
      user: null
    };
  },
  methods: {
    getUser() {
      axios.get('http://localhost:8081/getUser/1')  // 根据实际后端服务地址和接口路径调整
       .then(response => {
          this.user = response.data;
        })
       .catch(error => {
          console.log(error);
        });
    }
  }
};
</script>

上述代码在点击按钮时会向之前创建的后端Dubbo服务消费者暴露的接口(这里假设是/getUser/1这个路径获取用户ID为1的信息)发送请求,获取到数据后展示用户名称。

  1. 在Vue项目中配置跨域(如果后端和前端域名、端口不同的话)
    在Vue项目的vue.config.js(如果没有则新建)文件中配置跨域相关内容,示例如下:
module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8081',  // 后端服务地址
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
};

这样前端在发送请求时,对于以/api开头的请求路径会被代理转发到实际的后端服务地址,解决跨域问题,便于开发调试。

三、启动项目

  1. 首先启动Zookeeper注册中心(如果使用Zookeeper作为注册中心的话)。
  2. 启动Dubbo服务提供者项目,确保服务能正常注册到注册中心并且可以对外提供服务。
  3. 启动Vue项目,通过命令行在项目根目录执行npm run serve(开发环境启动命令,具体根据项目package.json中配置为准),然后在浏览器访问Vue项目对应的地址,点击相关按钮等操作就可以看到与后端Dubbo服务交互的效果了。
posted @ 2024-12-18 16:52  软件职业规划  阅读(6)  评论(0编辑  收藏  举报