具体点击:https://blog.csdn.net/houshaolin/article/details/76408399
首先先安装Zookeeper
在Zookeeper官网中下载Zookeeper发行包并解压:
将Zookeeper安装目录的conf子文件夹中的zoo_sample.cfg复制一份并重命名为zoo.cfg
执行Zookeeper安装(解压)目录中bin子文件夹的zkServer.cmd启动Zookeeper
首先创建springBoot项目
使用eclipse创建war项目,pom.xml可能出现说
web.xml is missing and 'failOnMissingWebXml' is set to true
有两种:
第一种当然是创建一个web.xml了。
但是更推荐第二种,因为第一种会在项目里有一个无用文件。
第二种是告诉maven,我真的不需要web.xml了
org.apache.maven.plugins
maven-war-plugin
2.6
false
然后Maven>Update project这样就可以了,其中的version不是必需的。
创建一个名为demo_provider的SpringBoot项目
需要引入的依赖
io.dubbo.springboot
spring-boot-starter-dubbo
1.0.0
org.apache.zookeeper
zookeeper
3.4.6
com.github.sgroschupf
zkclient
0.1
application.properties 配置:
#为了防止Tomcat端口冲突
server.port=8081
#提供者名字,任意取名
spring.dubbo.application.name=ppp-provider
#2181默认的zookeeper入口
spring.dubbo.registry.address=zookeeper://172.17.1.30:2181
spring.dubbo.protocol.name=dubbo
#提供者提供的端口,任意取
spring.dubbo.protocol.port=9999
#提供者提供的接口
spring.dubbo.scan=com.example.service
提供接口的实现类
@Service
public class StudentServiceImpl implements IStudentService {
@Override
public List getList() {
List list = new ArrayList();
list.add(new Student(1,"张三",11));
list.add(new Student(2,"李四",22));
list.add(new Student(3,"王五",33));
return list;
}
@Override
public Student getStudentById(Integer id) {
return null;
}
然后在SpringBoot启动入口启动程序,出现红色框里的内容证明服务端启动成功:
创建一个名为demo_consumer的SpringBoot项目
需要引入的依赖
io.dubbo.springboot
spring-boot-starter-dubbo
1.0.0
org.apache.zookeeper
zookeeper
3.4.6
pom
com.github.sgroschupf
zkclient
0.1
com.alibaba
dubbo
2.6.0
org.springframework
spring
在这里需要创建一个跟提供者路径相同、类名相同、方法名和返回值相同的接口,有涉及到提供者实体类的话,消费者必须也创建一个跟提供者实体类路径和对象一样的实体类。
server.port=8082
spring.dubbo.application.name=c-consumer
spring.dubbo.registry.address=zookeeper://172.17.1.30:2181
spring.dubbo.scan=com.example.service
使用@Reference注解注入远程服务,使自己的服务层使用远程服务对象调用所需要的方法
package com.qhr.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.alibaba.dubbo.config.annotation.Reference;
import com.example.entity.Student;
import com.example.service.IStudentService;
@Service
public class StudentServiceImpl {
//注入分布式的远程服务的对象
@Reference
IStudentService service;
public List list(){
return service.getList();
}
}
控制层按平常调用自己的service层返回数据到页面
package com.qhr.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.entity.Student;
import com.qhr.service.StudentServiceImpl;
@RestController
public class StudentController {
@Autowired
StudentServiceImpl service;
@RequestMapping("/studentList")
public List list(){
return service.list();
}
}
消费者启动入口:
package com.qhr;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
//把远程服务给扫描进来
@DubboComponentScan(basePackages="com.example.service")
@SpringBootApplication
//SpringMVC注解,直接返回给页面一个json数据
@RestController
public class DemoConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DemoConsumerApplication.class, args);
}
@RequestMapping("/")
public String index(){
return "客户端大爷你好。。。";
}
}
浏览器访问消费者URL
出现了远程服务实现类的数据证明消费者已经调用远程服务成功!
进入一个dubbo提供的war文件web程序可以看到我们创建提供者和消费者
资源war文件:https://pan.baidu.com/s/1OvgfUbYICUvBufggyQgzRg 提取码:z2c3
下载完放在Tomcat的webapps路径下即可,然后进入bin目录打开startup.bat文件启动Tomcat服务
启动完后Tomcat将多出一个dubboadmin文件
复制文件名通过访问localhost:8080/dubboadmin
确认身份后将进入此页面,然后点击进去即可看到编写提供者和消费者
SpringBoot和Dubbo-zookeeper(基于注解)微服务框架简单例子就简单做完了 。。。。