springboot+mybatis+zookeeper+dubbo的组合使用

这个Demo的基本结构就是provider+consumer+interface

1.首先创建一个maven工程interface,接口工程的具体结构如下:

springboot+mybatis+zookeeper+dubbo的组合使用_第1张图片

2.接着创建提供者provider

springboot+mybatis+zookeeper+dubbo的组合使用_第2张图片

2.1   pom文件编写如下代码





        com.kinglong.springboot
        springboot-dubbo-provider
        1.0.0


    4.0.0

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.9.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
    

    

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
        
            com.alibaba.spring.boot
            dubbo-spring-boot-starter
            1.0.0
        

        
        
            com.101tec
            zkclient
            0.10
        

        
        
            com.kinglong.springboot
            springboot-dubbo-interface
            1.0.0
        

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.1
        

        
        
            mysql
            mysql-connector-java
        

    

    
        
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.6
                
                    
                    src/main/resources/GeneratorMapper.xml
                    true
                    true
                
            
        
       
    


2.2接着创建springboot的main方法类,因为是集成dubbo框架,所以记得添加注解 @EnableDubboConfiguration

springboot+mybatis+zookeeper+dubbo的组合使用_第3张图片

2.3 继续创建resources文件下的主配置文件,因为要采用maven生成映射文件mapper.所以同时创建一个GeneratorMapper.xml的配置文件,其生成映射文件的依赖包已经在pom文件标签中声明过了.

springboot+mybatis+zookeeper+dubbo的组合使用_第4张图片

application.properties内容如下:

# WEB服务端口
server.port=9200

# dubbo配置
spring.dubbo.appname=14-springboot-all-dubbo-provider
spring.dubbo.registry=zookeeper://192.168.174.129:2181

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.174.129:3306/springdb?useUnicode=true&characterEncoding=utf8&useSSL=false
GeneratorMapper.xml的内容如下:






    
    

    
    

        
        
            
        

        
        
        

        
        
            
            
        

        
        
            
        

        
        
            
        

        
        一切准备就绪之后,就可以生成mapper映射文件了 
  
springboot+mybatis+zookeeper+dubbo的组合使用_第5张图片

点击生成之后如下提示:

springboot+mybatis+zookeeper+dubbo的组合使用_第6张图片

springboot+mybatis+zookeeper+dubbo的组合使用_第7张图片

因为model类在interface中已经创建,所以在这里创建的要删除他.在这里用不到.

因为使用的是注解开发,所以在映射文件中要添加注解@Mapper如果在此处不添加注解,就需要在main方法类Application中添加了,使用起来会繁琐一点.

springboot+mybatis+zookeeper+dubbo的组合使用_第8张图片

2.4创建业务实现类UserServiceImpl

springboot+mybatis+zookeeper+dubbo的组合使用_第9张图片

具体如下:

package com.kinglong.springboot.service.impl;

import com.kinglong.springboot.model.User;
import com.kinglong.springboot.service.UserService;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

//spring的service注解
@Service
//dubbo的service注解
@com.alibaba.dubbo.config.annotation.Service
public class UserServiceImpl implements UserService{


    @Override
    public User getUser(Integer id) {
        return null;
    }

    @Override
    public int addUser(User user) {
        return 0;
    }

    @Override
    public int updateUser(User user) {
        return 0;
    }

    @Override
    public int deleteUser(Integer id) {
        return 0;
    }

    @Override
    public List getUserByPage(Map paramMap) {
        return null;
    }

    @Override
    public int getUserByTotal() {
        return 0;
    }
}
敲黑板了!!!!重点来了!注意一下,需要在实现类上添加两个@Service注解,一个是dubbo框架的,一个是spring框架的.因为dubbo需要暴露服务,而同时spring容器需要加载管理它,所以添加两个即可,如果不添加,则同样需要在 main方法类Application中添加了,使用起来会繁琐一点.

springboot+mybatis+zookeeper+dubbo的组合使用_第10张图片

3.创建消费者consumer

springboot+mybatis+zookeeper+dubbo的组合使用_第11张图片

3.1检查pom文件依赖,添加所需依赖,具体如下:





        com.kinglong.springboot
        springboot-dubbo-consumer
        1.0.0


    4.0.0

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.9.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
     
         
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
        
            com.alibaba.spring.boot
            dubbo-spring-boot-starter
            1.0.0
        

        
        
            com.101tec
            zkclient
            0.10
        

        
        
            com.kinglong.springboot
            springboot-dubbo-interface
            1.0.0
        

        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        

        
            net.sourceforge.nekohtml
            nekohtml
        
        
            org.unbescape
            unbescape
            1.1.5.RELEASE
        

    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


又一个重点来了!由于springboot推荐使用的前端展示页面为thymeleaf,所以这里添加了thymeleaf的依赖包

springboot+mybatis+zookeeper+dubbo的组合使用_第12张图片

3.2 依旧接着创建springboot的main方法类,因为是集成dubbo框架,所以记得添加注解@EnableDubboConfiguration

springboot+mybatis+zookeeper+dubbo的组合使用_第13张图片

3.3继续创建resources文件中的主配置文件以及前端展示页面user.html

springboot+mybatis+zookeeper+dubbo的组合使用_第14张图片

application.properties内容如下:

# WEB服务端口
server.port=9100

# dubbo配置
spring.dubbo.appname=14-springboot-all-dubbo-provider
spring.dubbo.registry=zookeeper://192.168.174.129:2181

#开发阶段,建议关闭thymeleaf的缓存
spring.thymeleaf.cache=false
#使用遗留的html5以去掉对html标签的校验
spring.thymeleaf.mode=LEGACYHTML5

spring.mvc.view.prefix=/
spring.mvc.view.suffix=.html
user.html内容如下:




    
    Spring boot集成 Thymeleaf




3.4创建controller文件,内容如下:

package com.kinglong.springboot.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.kinglong.springboot.model.User;
import com.kinglong.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("/all/index")
    public String index (Model model,
                         @RequestParam(value="currentPage", required = false) Integer currentPage) {

        int pageSize = 10;

        if (null == currentPage) {
            currentPage = 1;
        }

        int totalRow = userService.getUserByTotal();

        int totalPage = totalRow / pageSize;
        int left = totalRow % pageSize;

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

        int startRow = (currentPage-1) * pageSize;
        Map paramMap = new ConcurrentHashMap<>();
        paramMap.put("startRow", startRow);
        paramMap.put("pageSize", pageSize);

       List userList = userService.getUserByPage(paramMap);
       
        model.addAttribute("userList", userList);


        return "user";
    }
}
最后,起服测试,我随意填写了个测试数据,效果如下.

springboot+mybatis+zookeeper+dubbo的组合使用_第15张图片

总结:这是最基本的springboot集成各框架运行的Demo,熟练应运他之后相信springboot框架也会很熟练的,其实,springboot框架只是在spring框架的基础上再次做了集成,所以,如果spring框架如果用的熟练的话,相信一定会很快地掌握的.



你可能感兴趣的:(后端)