diff --git a/pom.xml b/pom.xml
index 7a46ea1..7f500b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,6 +13,8 @@
springboot-mybatis
springboot-restful
springboot-freemarker
+ springboot-dubbo-server
+ springboot-dubbo-client
\ No newline at end of file
diff --git a/springboot-dubbo-client/pom.xml b/springboot-dubbo-client/pom.xml
new file mode 100755
index 0000000..0253e58
--- /dev/null
+++ b/springboot-dubbo-client/pom.xml
@@ -0,0 +1,52 @@
+
+
+ 4.0.0
+
+ springboot
+ springboot-dubbo-client
+ 0.0.1-SNAPSHOT
+ springboot-dubbo 客户端:: 整合 Dubbo/ZooKeeper 详解 SOA 案例
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.5.1.RELEASE
+
+
+
+ 1.0.0
+
+
+
+
+
+
+ io.dubbo.springboot
+ spring-boot-starter-dubbo
+ ${dubbo-spring-boot}
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
+
+
diff --git a/springboot-dubbo-client/src/main/java/org/spring/springboot/ClientApplication.java b/springboot-dubbo-client/src/main/java/org/spring/springboot/ClientApplication.java
new file mode 100644
index 0000000..9a29213
--- /dev/null
+++ b/springboot-dubbo-client/src/main/java/org/spring/springboot/ClientApplication.java
@@ -0,0 +1,24 @@
+package org.spring.springboot;
+
+import org.spring.springboot.dubbo.CityDubboConsumerService;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ConfigurableApplicationContext;
+
+/**
+ * Spring Boot 应用启动类
+ *
+ * Created by bysocket on 16/4/26.
+ */
+// Spring Boot 应用的标识
+@SpringBootApplication
+public class ClientApplication {
+
+ public static void main(String[] args) {
+ // 程序启动入口
+ // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件
+ ConfigurableApplicationContext run = SpringApplication.run(ClientApplication.class, args);
+ CityDubboConsumerService cityService = run.getBean(CityDubboConsumerService.class);
+ cityService.printCity();
+ }
+}
diff --git a/springboot-dubbo-client/src/main/java/org/spring/springboot/domain/City.java b/springboot-dubbo-client/src/main/java/org/spring/springboot/domain/City.java
new file mode 100644
index 0000000..ed2e6e7
--- /dev/null
+++ b/springboot-dubbo-client/src/main/java/org/spring/springboot/domain/City.java
@@ -0,0 +1,75 @@
+package org.spring.springboot.domain;
+
+import java.io.Serializable;
+
+/**
+ * 城市实体类
+ *
+ * Created by bysocket on 07/02/2017.
+ */
+public class City implements Serializable {
+
+ private static final long serialVersionUID = -1L;
+
+ /**
+ * 城市编号
+ */
+ private Long id;
+
+ /**
+ * 省份编号
+ */
+ private Long provinceId;
+
+ /**
+ * 城市名称
+ */
+ private String cityName;
+
+ /**
+ * 描述
+ */
+ private String description;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getProvinceId() {
+ return provinceId;
+ }
+
+ public void setProvinceId(Long provinceId) {
+ this.provinceId = provinceId;
+ }
+
+ public String getCityName() {
+ return cityName;
+ }
+
+ public void setCityName(String cityName) {
+ this.cityName = cityName;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public String toString() {
+ return "City{" +
+ "id=" + id +
+ ", provinceId=" + provinceId +
+ ", cityName='" + cityName + '\'' +
+ ", description='" + description + '\'' +
+ '}';
+ }
+}
diff --git a/springboot-dubbo-client/src/main/java/org/spring/springboot/dubbo/CityDubboConsumerService.java b/springboot-dubbo-client/src/main/java/org/spring/springboot/dubbo/CityDubboConsumerService.java
new file mode 100644
index 0000000..da3ff81
--- /dev/null
+++ b/springboot-dubbo-client/src/main/java/org/spring/springboot/dubbo/CityDubboConsumerService.java
@@ -0,0 +1,23 @@
+package org.spring.springboot.dubbo;
+
+import com.alibaba.dubbo.config.annotation.Reference;
+import org.spring.springboot.domain.City;
+import org.springframework.stereotype.Component;
+
+/**
+ * 城市 Dubbo 服务消费者
+ *
+ * Created by bysocket on 28/02/2017.
+ */
+@Component
+public class CityDubboConsumerService {
+
+ @Reference(version = "1.0.0")
+ CityDubboService cityDubboService;
+
+ public void printCity() {
+ String cityName="温岭";
+ City city = cityDubboService.findCityByName(cityName);
+ System.out.println(city.toString());
+ }
+}
diff --git a/springboot-dubbo-client/src/main/java/org/spring/springboot/dubbo/CityDubboService.java b/springboot-dubbo-client/src/main/java/org/spring/springboot/dubbo/CityDubboService.java
new file mode 100644
index 0000000..317a581
--- /dev/null
+++ b/springboot-dubbo-client/src/main/java/org/spring/springboot/dubbo/CityDubboService.java
@@ -0,0 +1,17 @@
+package org.spring.springboot.dubbo;
+
+import org.spring.springboot.domain.City;
+
+/**
+ * 城市业务 Dubbo 服务层
+ *
+ * Created by bysocket on 28/02/2017.
+ */
+public interface CityDubboService {
+
+ /**
+ * 根据城市名称,查询城市信息
+ * @param cityName
+ */
+ City findCityByName(String cityName);
+}
diff --git a/springboot-dubbo-client/src/main/resources/application.properties b/springboot-dubbo-client/src/main/resources/application.properties
new file mode 100644
index 0000000..5e52390
--- /dev/null
+++ b/springboot-dubbo-client/src/main/resources/application.properties
@@ -0,0 +1,7 @@
+## 避免和 server 工程端口冲突
+server.port=8081
+
+## Dubbo 服务消费者配置
+spring.dubbo.application.name=consumer
+spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
+spring.dubbo.scan=org.spring.springboot.dubbo
\ No newline at end of file
diff --git a/springboot-dubbo-server/pom.xml b/springboot-dubbo-server/pom.xml
new file mode 100755
index 0000000..e156bc5
--- /dev/null
+++ b/springboot-dubbo-server/pom.xml
@@ -0,0 +1,51 @@
+
+
+ 4.0.0
+
+ springboot
+ springboot-dubbo-server
+ 0.0.1-SNAPSHOT
+ springboot-dubbo 服务端:: 整合 Dubbo/ZooKeeper 详解 SOA 案例
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.5.1.RELEASE
+
+
+
+ 1.0.0
+
+
+
+
+
+
+ io.dubbo.springboot
+ spring-boot-starter-dubbo
+ ${dubbo-spring-boot}
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
+
diff --git a/springboot-dubbo-server/src/main/java/org/spring/springboot/ServerApplication.java b/springboot-dubbo-server/src/main/java/org/spring/springboot/ServerApplication.java
new file mode 100644
index 0000000..273d1fe
--- /dev/null
+++ b/springboot-dubbo-server/src/main/java/org/spring/springboot/ServerApplication.java
@@ -0,0 +1,20 @@
+package org.spring.springboot;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * Spring Boot 应用启动类
+ *
+ * Created by bysocket on 16/4/26.
+ */
+// Spring Boot 应用的标识
+@SpringBootApplication
+public class ServerApplication {
+
+ public static void main(String[] args) {
+ // 程序启动入口
+ // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件
+ SpringApplication.run(ServerApplication.class,args);
+ }
+}
diff --git a/springboot-dubbo-server/src/main/java/org/spring/springboot/domain/City.java b/springboot-dubbo-server/src/main/java/org/spring/springboot/domain/City.java
new file mode 100644
index 0000000..4ac0d43
--- /dev/null
+++ b/springboot-dubbo-server/src/main/java/org/spring/springboot/domain/City.java
@@ -0,0 +1,75 @@
+package org.spring.springboot.domain;
+
+import java.io.Serializable;
+
+/**
+ * 城市实体类
+ *
+ * Created by bysocket on 07/02/2017.
+ */
+public class City implements Serializable {
+
+ private static final long serialVersionUID = -1L;
+
+ /**
+ * 城市编号
+ */
+ private Long id;
+
+ /**
+ * 省份编号
+ */
+ private Long provinceId;
+
+ /**
+ * 城市名称
+ */
+ private String cityName;
+
+ /**
+ * 描述
+ */
+ private String description;
+
+ public City() {
+ }
+
+ public City(Long id, Long provinceId, String cityName, String description) {
+ this.id = id;
+ this.provinceId = provinceId;
+ this.cityName = cityName;
+ this.description = description;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getProvinceId() {
+ return provinceId;
+ }
+
+ public void setProvinceId(Long provinceId) {
+ this.provinceId = provinceId;
+ }
+
+ public String getCityName() {
+ return cityName;
+ }
+
+ public void setCityName(String cityName) {
+ this.cityName = cityName;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
diff --git a/springboot-dubbo-server/src/main/java/org/spring/springboot/dubbo/CityDubboService.java b/springboot-dubbo-server/src/main/java/org/spring/springboot/dubbo/CityDubboService.java
new file mode 100644
index 0000000..317a581
--- /dev/null
+++ b/springboot-dubbo-server/src/main/java/org/spring/springboot/dubbo/CityDubboService.java
@@ -0,0 +1,17 @@
+package org.spring.springboot.dubbo;
+
+import org.spring.springboot.domain.City;
+
+/**
+ * 城市业务 Dubbo 服务层
+ *
+ * Created by bysocket on 28/02/2017.
+ */
+public interface CityDubboService {
+
+ /**
+ * 根据城市名称,查询城市信息
+ * @param cityName
+ */
+ City findCityByName(String cityName);
+}
diff --git a/springboot-dubbo-server/src/main/java/org/spring/springboot/dubbo/impl/CityDubboServiceImpl.java b/springboot-dubbo-server/src/main/java/org/spring/springboot/dubbo/impl/CityDubboServiceImpl.java
new file mode 100644
index 0000000..e4036d0
--- /dev/null
+++ b/springboot-dubbo-server/src/main/java/org/spring/springboot/dubbo/impl/CityDubboServiceImpl.java
@@ -0,0 +1,20 @@
+package org.spring.springboot.dubbo.impl;
+
+import com.alibaba.dubbo.config.annotation.Service;
+import org.spring.springboot.domain.City;
+import org.spring.springboot.dubbo.CityDubboService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 城市业务 Dubbo 服务层实现层
+ *
+ * Created by bysocket on 28/02/2017.
+ */
+// 注册为 Dubbo 服务
+@Service(version = "1.0.0")
+public class CityDubboServiceImpl implements CityDubboService {
+
+ public City findCityByName(String cityName) {
+ return new City(1L,2L,"温岭","是我的故乡");
+ }
+}
diff --git a/springboot-dubbo-server/src/main/resources/application.properties b/springboot-dubbo-server/src/main/resources/application.properties
new file mode 100644
index 0000000..0d68c2c
--- /dev/null
+++ b/springboot-dubbo-server/src/main/resources/application.properties
@@ -0,0 +1,6 @@
+## Dubbo 服务提供者配置
+spring.dubbo.application.name=provider
+spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
+spring.dubbo.protocol.name=dubbo
+spring.dubbo.protocol.port=20880
+spring.dubbo.scan=org.spring.springboot.dubbo
\ No newline at end of file