第一、首先创建一个服务接口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,需要表明你的消费者名称
以上就是简单的配置了。