springboot + dubbo + mybatis + redis整合案例

第一、首先创建一个服务接口maven项目

   放一些服务的接口(UserService)与实体类(User),在本地仓库安装(install)一下接口服务

目录结构

User类就是简单的实体类

UserService类就是一个接口类,放一些接口方法

点击maven install,安装接口服务,注意idea在工具的右侧,eclipse右键项目 run as

idea工具如下图

第二、需要创建服务提供者springboot项目,

服务提供者主要作用是实现接口服务项目中的接口,进行业务逻辑的处理,对数据库进行相关操作

创建好之后 需要在pox添加dubbo的依赖支持以及zookeeper客户端依赖,然后启动好zookeeper,,还需添加mybatis,redis,mysql等的起步依赖



<!--springboot集成dubbo起步依赖-->
<dependency>
	<groupId>com.alibaba.spring.boot</groupId>
	<artifactId>dubbo-spring-boot-starter</artifactId>
	<version>2.0.0</version>
</dependency>
<!--zookeeper客户端-->
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
       <exclusions>
          <exclusion>
             <groupId>log4j</groupId>
             <artifactId>log4j</artifactId>
           </exclusion>
           <exclusion>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-log4j12</artifactId>
           </exclusion>
        </exclusions>
  </dependency>
<!--dubbo接口服务jar包依赖,就是刚才install的jar包-->
<dependency>
     <groupId>com.bjpowernode.springboot</groupId>
     <artifactId>10-springboot-all-interface</artifactId>
     <version>0.0.1-SNAPSHOT</version>
</dependency>
<!--mybatis起步依赖包-->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.3.1</version>
</dependency>
<!--mysql包-->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--redis起步依赖包-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

mapper类是跟mybatis的整合,用来对数据库进行操作处理的接口功能(增删改查)

userMapper.xml主要是对数据库进行操作的sql实现,

UserServiceImpl是对之前install好服务接口(UserService)进行实现的实现类,主要用于对业务的处理

application.properties文件是配置文件,主要是dubbo,redis,mysql的配置信息

上面一些简单的业务就实现了,但是你在启动的时候需要让springboot知道要引用dubbo的注解,所以在启动类上得加上开启扫描dubbo的注解

提供者部分代码已经写完了

第三、创建一个服务消费者consumer项目(springboot项目)

服务消费者只是调用服务提供者的服务,比较简单

pom文件同服务提供者,只是把数据库和redis的依赖给去掉了,因为他不需要操作数据,操作数据这些事只需要交给提供者去做就可以了

package com.bjpowernode.springboot.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.bjpowernode.springboot.model.User;
import com.bjpowernode.springboot.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @描述 :
 * @作者 :
 * @创建时间 :
 * @修改描述 :
 */

@Controller
public class UserController {

    @Reference
    private UserService userService;


    @RequestMapping("/index")
    public String index(Model model,
            @RequestParam(value = "curPage",required = false)Integer curPage){

       int pageSize = 5;

       //当前页
        if (null == curPage || curPage <1){
            curPage = 1;
        }
        //总行数
       int totalRows = userService.getUserByTotal();
        //计算分多少页
       int totalPages = totalRows / pageSize;
       //余数
       int left = totalRows % pageSize;

       if (left > 0){
           totalPages = totalPages + 1;
       }

       if (curPage>totalPages){
           curPage = totalPages;
       }

       //计算查询的开始行
       int startRow = (curPage - 1)*pageSize;
       Map<String,Object> paramMap = new ConcurrentHashMap<>();
       paramMap.put("startRow",startRow);
       paramMap.put("pageSize",pageSize);

       List<User> userList=userService.getUserByPage(paramMap);

       model.addAttribute("userList",userList);
       model.addAttribute("curPage",curPage);
       model.addAttribute("totalPages",totalPages);
       return "index";

    }

    @RequestMapping("/user/toAddUser")
    public String toAddUser(){
        return "addUser";
    }

    /**
     * 添加或者修改
     * @param user
     * @return
     */
    @RequestMapping("/user/addUser")
    public String addUser( User user){

        Integer id = user.getId();
        if (null==id){
            //添加用户
            userService.addUser(user);
        }else {
            //修改用户
            userService.updateUser(user);
        }

        return "redirect:/index";
    }

    /**
     *
     * @param model
     * @param id
     * @return
     */
    @RequestMapping("/user/toUpdate")
    public String toUpdate(Model model,@RequestParam("id") Integer id){

        User user = userService.getUserById(id);

        model.addAttribute("user",user);

        return "addUser";
    }

    /**
     *
     * @param id
     * @return
     */
    @RequestMapping("/user/delete")
    public String delete(@RequestParam("id") Integer id){

        userService.deleteUser(id);

        return "redirect:/index";
    }



}

启动的时候需要让springboot知道要引用dubbo的注解,所以在启动类上得加上开启扫描dubbo的注解,application.properties文件中也需要配置dubbo,需要表明你的消费者名称

以上就是简单的配置了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值