Dubbo实战案例02【业务实现】

简介: Dubbo实战案例02【业务实现】


文章目录

   业务实现

       添加用户信息

           1.实现添加业务的服务

               1.1dubbo-Mapper

               1.2 dubbo-user-interface

               1.3 dubbo-user-service

           2.实现添加业务的业务

               2.1 dubbo-user-portal-service

               2.2 dubbo-user-portal

               2.3 测试

       查询用户信息

           1.实现查询用户服务

               1.1 dubbo-mapper

               1.2 dubbo-user-interface

               1.3 dubbo-user-service

           2.实现查询用户业务

               2.1 dubbo-user-protal-service

               2.2 dubbo-user-protal

       删除用户信息

           1.实现删除用户服务

               1.1 dubbo-mapper

               1.2 dubbo-user-interface

               1.3 dubbo-user-service

           2.实现删除用户业务

               2.1 dubbo-user-protal-service

               2.2 dubbo-user-protal

 本文在上篇文章的基础上来实现用户信息的CRUD操作

业务实现

image.png

添加用户信息

1.实现添加业务的服务

1.1dubbo-Mapper

/**
 * UsersMapper接口文件
 * @author dengp
 *
 */
public interface UsersMapper {
  void insertUsers(User user);
}
/**
 * UsersMapper接口文件
 * @author dengp
 *
 */
public interface UsersMapper {
  void insertUsers(User user);
}

1.2 dubbo-user-interface

package com.bobo.dubbo.service;
import com.bobo.pojo.User;
/**
 * 将用户的CRUD四个操作我们拆成了4个服务,便于演示dubbo
 * 实际开发过程中不用
 * @author dengp
 *
 */
public interface AddUserDubboService {
  void addUser(User user);
}

1.3 dubbo-user-service

package com.bobo.dubbo.service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.bobo.dubbo.service.AddUserDubboService;
import com.bobo.mapper.UsersMapper;
import com.bobo.pojo.User;
@Service
public class AddUserDubboServiceImpl implements AddUserDubboService {
  @Resource
  private UsersMapper userMapper;
  @Override
  public void addUser(User user) {
    // TODO Auto-generated method stub
    userMapper.insertUsers(user);
  }
}

注意我们在服务端添加了服务,我们需要在Dubbo中注册该服务。

image.png

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 导入Spring相关的配置文件 -->
  <import resource="../../applicationContext-dao.xml" />
  <import resource="../../applicationContext-service.xml" />
  <import resource="../../applicationContext-trans.xml" />
  <dubbo:application name="user-provider" />
  <dubbo:registry protocol="zookeeper"
    address="node01:2181,node02:2181,node03:2181"/>
  <dubbo:protocol name="dubbo" port="20880"/>
  <!-- 向dubbo中注册的服务  -->
  <dubbo:service interface="com.bobo.dubbo.service.AddUserDubboService" 
        ref="addUserDubboServiceImpl"/>
</beans>

服务端测试

image.png

连接成功

2.实现添加业务的业务

2.1 dubbo-user-portal-service

/**
 * 用户管理的业务接口
 * @author dengp
 *
 */
public interface UserService {
  void addUser(User user);
}
@Service
public class UserServiceImpl implements UserService {
  @Resource
  private AddUserDubboService addUserService;
  @Override
  public void addUser(User user) {
    // TODO Auto-generated method stub
    addUserService.addUser(user);
  }
}

2.2 dubbo-user-portal

UserController

package com.bobo.controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.bobo.pojo.User;
import com.bobo.service.UserService;
@Controller
@RequestMapping("/user")
public class UserController {
  @Resource
  private UserService userService;
  @RequestMapping("/addUser")
  public String addUser(User user){
    userService.addUser(user);
    return "success";
  }
}

Consumer需要指定从dubbo中获取什么服务

image.png

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  <dubbo:application name="dubbo-consumer"/>
  <dubbo:registry  protocol="zookeeper"
    address="node01:2181,node02:2181,node03:2181" /> 
  <!-- 指定获取的服务 -->
  <dubbo:reference id="addUserDubboService"
     interface="com.bobo.dubbo.service.AddUserDubboService"/>
 </beans>

addUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <form action="/user/addUser" method="post">
    用户名:<input type="text" name="username" /><br /> 
    用户年龄:<input type="text" name="userage" /><br /> 
    <input type="submit" value="提交" />
  </form>
</body>
</html>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <h1>dubbo .... 欢迎</h1>
  <h2><a href="/addUser">添加用户信息</a></h2>
</body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <h1>操作成功</h1>
</body>
</html>

PageController

@Controller
public class PageController {
  @RequestMapping("/")
  public String index(){
    return "index";
  }
  @RequestMapping("/{path}")
  public String base(@PathVariable String path){
    return path;
  }
}

2.3 测试

报错

image.png

image.png

在访问

image.png

image.png

image.png

查询用户信息

1.实现查询用户服务

1.1 dubbo-mapper

image.png

image.png

1.2 dubbo-user-interface

image.png

1.3 dubbo-user-service

image.png

向dubbo注册服务

image.png

2.实现查询用户业务

2.1 dubbo-user-protal-service

image.png

image.png

2.2 dubbo-user-protal

userController

image.png

从dubbo中发现服务

image.png

index.jsp

image.png

user.jsp

<%@ page language="java" contentType="text/html; 
charset=UTF-8"
  pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <table border="1" align="center">
    <tr>
      <th>用户 ID</th>
      <th>用户姓名</th>
      <th>用户年龄</th>
      <th>操作</th>
    </tr>
    <c:forEach items="${list }" var="user">
      <tr>
        <td>${user.id }</td>
        <td>${user.username }</td>
        <td>${user.userage }</td>
        <td><a href="">更新</a> <a href="">删除</a></td>
      </tr>
    </c:forEach>
  </table>
</body>
</html>

测试

image.png

成功查询出数据

删除用户信息

1.实现删除用户服务

1.1 dubbo-mapper

image.png

1.2 dubbo-user-interface

image.png

1.3 dubbo-user-service

image.png

注册业务

image.png

2.实现删除用户业务

2.1 dubbo-user-protal-service

image.png

image.png

2.2 dubbo-user-protal

UserController

image.png

dubbo中获取服务

image.png

删除按钮

image.png

测试

image.pngimage.png

操作成功~


相关文章
|
1月前
|
Dubbo Java 应用服务中间件
实战指南:如何在Spring Boot中无缝整合Dubbo【四】
实战指南:如何在Spring Boot中无缝整合Dubbo【四】
56 0
|
1月前
|
Dubbo 应用服务中间件
电子好书发您分享《Dubbo分布式服务治理实战》
电子好书发您分享《Dubbo分布式服务治理实战》
127 2
|
1月前
|
XML Cloud Native Dubbo
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南(一)
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南
109 1
|
1月前
|
Dubbo Cloud Native 应用服务中间件
【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中心、注册中心的原理及开发实战(中)
【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中心、注册中心的原理及开发实战(中)
68 1
|
1月前
|
Cloud Native Dubbo 应用服务中间件
【Dubbo3高级特性】「微服务云原生架构」带你从零基础认识搭建公司内部服务用户中心体系(实战指南-序章)
【Dubbo3高级特性】「微服务云原生架构」带你从零基础认识搭建公司内部服务用户中心体系(实战指南-序章)
128 0
|
1月前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
101 0
|
1月前
|
XML Dubbo Java
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南(二)
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南
112 0
|
1月前
|
存储 Dubbo 应用服务中间件
SpringCloud | Dubbo 微服务实战——注册中心详解
SpringCloud | Dubbo 微服务实战——注册中心详解
|
1月前
|
Dubbo Java 应用服务中间件
Spring Boot + Dubbo + Zookpeer分布式案例
Spring Boot + Dubbo + Zookpeer分布式案例
41 0
|
6月前
|
Dubbo 应用服务中间件
电子好书发您分享《Dubbo分布式服务治理实战》
电子好书发您分享《Dubbo分布式服务治理实战》
39 1