简单的Dubbo与Vue整合的示例步骤
一、后端(基于Dubbo)搭建
- 环境准备
确保安装好Java开发环境(JDK)、Maven(用于项目构建管理)等基础工具。 - 创建Dubbo服务提供者项目
- 使用Spring Boot(方便集成Dubbo等各种组件)创建一个新的Maven项目。在
pom.xml
文件中引入Dubbo相关依赖,例如:
- 使用Spring Boot(方便集成Dubbo等各种组件)创建一个新的Maven项目。在
<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
- 创建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)搭建
- 环境准备
安装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的信息)发送请求,获取到数据后展示用户名称。
- 在Vue项目中配置跨域(如果后端和前端域名、端口不同的话)
在Vue项目的vue.config.js
(如果没有则新建)文件中配置跨域相关内容,示例如下:
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:8081', // 后端服务地址
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
}
};
这样前端在发送请求时,对于以/api
开头的请求路径会被代理转发到实际的后端服务地址,解决跨域问题,便于开发调试。
三、启动项目
- 首先启动Zookeeper注册中心(如果使用Zookeeper作为注册中心的话)。
- 启动Dubbo服务提供者项目,确保服务能正常注册到注册中心并且可以对外提供服务。
- 启动Vue项目,通过命令行在项目根目录执行
npm run serve
(开发环境启动命令,具体根据项目package.json
中配置为准),然后在浏览器访问Vue项目对应的地址,点击相关按钮等操作就可以看到与后端Dubbo服务交互的效果了。