# dubbotest **Repository Path**: nhniu/dubbotest ## Basic Information - **Project Name**: dubbotest - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-16 - **Last Updated**: 2021-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # springboot整合dubbo+zookeeper 项目结构: ![01](G:\学习\csdn\pic\2019.8.27\01.png) **注意:在做此demo之前应该先自行搭建好zookeeper环境** **也可以搭建dubbo监控环境** ## 1.随便创建一个项目,之后添加一个maven项目用于存放接口 ```java package com.hw.service; /** * @author Satsuki * @time 2019/8/27 17:51 * @description: * 一些模拟数据库事务的方法 */ public interface TestService { public void ins(); public void del(); public void upd(); public void sel(); } ``` ## 2.创捷服务提供者(将服务注册到zookeeper) pom文件: ```pom 4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.7.RELEASE com.hw provider 0.0.1-SNAPSHOT provider Demo project for Spring Boot 1.8 com.hw service 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.apache.dubbo dubbo-spring-boot-starter 2.7.3 org.slf4j slf4j-log4j12 org.apache.dubbo dubbo 2.7.3 org.apache.curator curator-framework 4.0.1 org.apache.curator curator-recipes 2.8.0 org.apache.zookeeper zookeeper 3.4.13 pom org.slf4j slf4j-log4j12 com.101tec zkclient 0.10 org.springframework.boot spring-boot-maven-plugin ``` application.properties: ```properties #spring项目名 spring.application.name=dubbo_auto_configuration_provider_demo #Dubbo provider configuration dubbo.application.name=dubbo_provider dubbo.registry.protocol=zookeeper dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.name=dubbo dubbo.protocol.port=20880 #扫描注解包通过该设置将服务注册到zookeeper dubbo.scan.base-packages=com.hw.provider.service ``` 具体服务实现: ```java package com.hw.provider.service.impl; import com.hw.service.TestService; import org.apache.dubbo.config.annotation.Service; /** * @author Satsuki * @time 2019/8/27 15:35 * @description: * 模拟数据库事务实现 */ @Service(version = "1.0.0",interfaceClass = TestService.class) //@Service(version = "1.0.0") public class TestServiceImpl implements TestService { @Override public void ins() { System.out.println("insert"); } @Override public void del() { System.out.println("delete"); } @Override public void upd() { System.out.println("update"); } @Override public void sel() { System.out.println("select"); } } ``` 启动类: ```java package com.hw.provider; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); } } ``` ### 步骤总结: 1.搭建pom环境 2.写好配置文件(一定要写上dubbo.scan.base-packages该配置会扫描你写的服务并注册到zookeeper) 3.具体服务实现 4.运行springboot启动类即可 ## 3.创建服务消费者(服务使用者:通过远程调用服务使用) pom文件与provider一致不再列出 application.properties: ```properties #dubbo configuration dubbo.application.name=dubbo_consumer dubbo.registry.protocol=zookeeper dubbo.registry.address=zookeeper://127.0.0.1:2181 #避免端口冲突 server.port=8085 ``` 服务调用: ```java package com.hw.consumer.controller; import com.hw.service.TestService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * @author Satsuki * @time 2019/8/27 15:58 * @description: * 调用dubbo */ @RestController public class TestController { // @Resource // private TestService testServiceImpl; @Reference(version = "1.0.0") private TestService testServiceImpl; @RequestMapping("/ins") public String ins(){ testServiceImpl.ins(); return "ins"; } @RequestMapping("/del") public String del(){ testServiceImpl.del(); return "del"; } @RequestMapping("/upd") public String upd(){ testServiceImpl.upd(); return "upd"; } @RequestMapping("/sel") public String sel(){ testServiceImpl.sel(); return "sel"; } } ``` 之后只要写一个springboot启动类启动服务并且通过url访问即可测试调用服务 结果如下: ![02](G:\学习\csdn\pic\2019.8.27\02.png) ![03](G:\学习\csdn\pic\2019.8.27\03.png) 完成 ## 踩坑: java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/TreeCacheListener 在pom文件中加入这两个依赖即可 ```pom org.apache.curator curator-framework 4.0.1 org.apache.curator curator-recipes 2.8.0 ```