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