详细代码地址:https://github.com/lightClouds917/springboot-dubbo-zookeeper
具体步骤分为五部:
如果基础的linux命令不熟练,请参考:Linux—(1)linux常用命令
tar zxvf zookeeper-3.4.8.tar.gz
tickTime=2000
dataDir=/javaee/zookeeper/data
dataLogDir=/javaee/zookeeper/log
clientPort=2181
cd zookeeper-3.3.6/bin
./zkServer.sh start
package com.java4all.domain;
import java.io.Serializable;
/**
* Author: momo
* Date: 2018/6/9
* Description:用户实体
*/
public class User implements Serializable{
private static final long serialVersionUID = -6591900875272367270L;
private Integer id;
private String name;
private Integer age;
public User() {
}
public User(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
package api;
import com.java4all.domain.User;
/**
* Author: momo
* Date: 2018/6/9
* Description:对外服务的接口
*/
public interface UserApi {
/**根据id查询user*/
User getUserById(Integer id);
}
<!-- Spring Boot Dubbo 依赖 -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.9</version>
</dependency>
<!--api模块-->
<dependency>
<groupId>com.java4all</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
server.port=8011
## Dubbo 服务提供者配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
# 这个扫描到实现类的所在包
spring.dubbo.scan=com.java4all.apiImpl
package com.java4all.apiImpl;
import api.UserApi;
import com.alibaba.dubbo.config.annotation.Service;
import com.java4all.domain.User;
/**
* Author: momo
* Date: 2018/6/9
* Description:接口服务实现类
*/
//对外暴露为dubbo服务,注意,这个@service为dubbo的@service,版本号可不要,或者自定义
@Service(version = "1.0.0")
public class UserApiImpl implements UserApi
{
@Override
public User getUserById(Integer id) {
return new User(id,"汪汪啊",22);
}
}
<!-- Spring Boot Dubbo 依赖 -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.9</version>
</dependency>
<!--api模块-->
<dependency>
<groupId>com.java4all</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
server.port=8022
## Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181
spring.dubbo.scan=com.java4all.controller
package com.java4all.controller;
import api.UserApi;
import com.alibaba.dubbo.config.annotation.Reference;
import com.java4all.domain.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* Author: momo
* Date: 2018/6/9
* Description:
*/
@RestController
@RequestMapping(value = "user")
public class UserController {
//指定服务实现类以及版本
@Reference(version = "1.0.0")
private UserApi userApi;
@RequestMapping(value = "getUserById",method = RequestMethod.GET)
public User getUserById(Integer id){
//调用服务提供的方法
return userApi.getUserById(88);
}
}
启动顺序为api,server,client;然后我们访问接口,发现服务被调用。
整合过程中遇到什么问题,欢迎留言探讨。