From c45d1d3b7a6e5b583b42a29facd7a70624e01a62 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com>
Date: Sat, 29 Dec 2018 17:44:28 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0spring=20dubbo=20=E7=94=A8?=
=?UTF-8?q?=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +-
.../dubbo-ano-common/pom.xml | 15 +++
.../com/heibaiying/api/IProductService.java | 16 +++
.../java/com/heibaiying/bean/Product.java | 33 +++++++
.../dubbo-ano-consumer/pom.xml | 23 +++++
.../config/DispatcherServletInitializer.java | 22 +++++
.../com/heibaiying/config/ServletConfig.java | 42 ++++++++
.../config/dubbo/DubboConfiguration.java | 47 +++++++++
.../heibaiying/controller/SellController.java | 38 +++++++
.../src/main/webapp/WEB-INF/jsp/product.jsp | 17 ++++
.../src/main/webapp/WEB-INF/jsp/products.jsp | 17 ++++
.../src/main/webapp/WEB-INF/web.xml | 6 ++
.../src/main/webapp/index.jsp | 9 ++
.../dubbo-ano-provider/pom.xml | 40 ++++++++
.../config/DispatcherServletInitializer.java | 22 +++++
.../com/heibaiying/config/ServletConfig.java | 23 +++++
.../config/dubbo/DubboConfiguration.java | 29 ++++++
.../heibaiying/service/ProductService.java | 40 ++++++++
.../src/main/webapp/WEB-INF/web.xml | 6 ++
.../src/main/webapp/index.jsp | 9 ++
spring/spring-dubbo-annotation/pom.xml | 98 +++++++++++++++++++
spring/spring-dubbo/dubbo-common/pom.xml | 15 +++
.../com/heibaiying/api/IProductService.java | 16 +++
.../java/com/heibaiying/bean/Product.java | 33 +++++++
spring/spring-dubbo/dubbo-consumer/pom.xml | 23 +++++
.../heibaiying/controller/SellController.java | 37 +++++++
.../src/main/resources/dubbo.xml | 26 +++++
.../src/main/resources/springApplication.xml | 31 ++++++
.../src/main/webapp/WEB-INF/jsp/product.jsp | 17 ++++
.../src/main/webapp/WEB-INF/jsp/products.jsp | 17 ++++
.../src/main/webapp/WEB-INF/web.xml | 29 ++++++
.../dubbo-consumer/src/main/webapp/index.jsp | 9 ++
spring/spring-dubbo/dubbo-provider/pom.xml | 40 ++++++++
.../heibaiying/service/ProductService.java | 39 ++++++++
.../src/main/resources/dubbo.xml | 24 +++++
.../src/main/resources/springApplication.xml | 9 ++
.../src/main/webapp/WEB-INF/web.xml | 29 ++++++
.../dubbo-provider/src/main/webapp/index.jsp | 9 ++
spring/spring-dubbo/pom.xml | 98 +++++++++++++++++++
39 files changed, 1054 insertions(+), 1 deletion(-)
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-common/pom.xml
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-common/src/main/java/com/heibaiying/api/IProductService.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-common/src/main/java/com/heibaiying/bean/Product.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-consumer/pom.xml
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/ServletConfig.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/dubbo/DubboConfiguration.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/controller/SellController.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/jsp/product.jsp
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/jsp/products.jsp
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/web.xml
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/index.jsp
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-provider/pom.xml
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/ServletConfig.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/dubbo/DubboConfiguration.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/service/ProductService.java
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/webapp/WEB-INF/web.xml
create mode 100644 spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/webapp/index.jsp
create mode 100644 spring/spring-dubbo-annotation/pom.xml
create mode 100644 spring/spring-dubbo/dubbo-common/pom.xml
create mode 100644 spring/spring-dubbo/dubbo-common/src/main/java/com/heibaiying/api/IProductService.java
create mode 100644 spring/spring-dubbo/dubbo-common/src/main/java/com/heibaiying/bean/Product.java
create mode 100644 spring/spring-dubbo/dubbo-consumer/pom.xml
create mode 100644 spring/spring-dubbo/dubbo-consumer/src/main/java/com/heibaiying/controller/SellController.java
create mode 100644 spring/spring-dubbo/dubbo-consumer/src/main/resources/dubbo.xml
create mode 100644 spring/spring-dubbo/dubbo-consumer/src/main/resources/springApplication.xml
create mode 100644 spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/jsp/product.jsp
create mode 100644 spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/jsp/products.jsp
create mode 100644 spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/web.xml
create mode 100644 spring/spring-dubbo/dubbo-consumer/src/main/webapp/index.jsp
create mode 100644 spring/spring-dubbo/dubbo-provider/pom.xml
create mode 100644 spring/spring-dubbo/dubbo-provider/src/main/java/com/heibaiying/service/ProductService.java
create mode 100644 spring/spring-dubbo/dubbo-provider/src/main/resources/dubbo.xml
create mode 100644 spring/spring-dubbo/dubbo-provider/src/main/resources/springApplication.xml
create mode 100644 spring/spring-dubbo/dubbo-provider/src/main/webapp/WEB-INF/web.xml
create mode 100644 spring/spring-dubbo/dubbo-provider/src/main/webapp/index.jsp
create mode 100644 spring/spring-dubbo/pom.xml
diff --git a/README.md b/README.md
index 9669bc5..43866ec 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ spring-cloud:Finchley.SR2
| [spring-mongodb](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-mongodb)
[spring-mongodb-annotation](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-mongodb-annotation) | spring 整合 mongodb | [Spring Data MongoDB](https://docs.spring.io/spring-data/mongodb/docs/2.1.3.RELEASE/reference/html/#mongo.mongo-db-factory-java) |
| [spring-memcached](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-memcached)
[spring-memcached-annotation](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-memcached-annotation) | spring 整合 memcached(单机+集群) | [Xmemcached](https://github.com/killme2008/xmemcached/wiki/Xmemcached%20%E4%B8%AD%E6%96%87%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97) |
| [spring-rabbitmq](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-rabbitmq)
[spring-rabbitmq-annotation](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-rabbitmq-annotation) | spring 整合 rabbitmq、消息序列化与反序列化 | [Rabbitmq](http://www.rabbitmq.com/getstarted.html)
[Spring AMQP](https://docs.spring.io/spring-amqp/docs/2.1.3.BUILD-SNAPSHOT/reference/html/) |
-| spring-dubbo
spring-dubbo-annotation | spring 整合 dubbo | [Dubbo ](http://dubbo.apache.org/zh-cn/docs/user/quick-start.html) |
+| [spring-dubbo](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-dubbo)
[spring-dubbo-annotation](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-dubbo-annotation) | spring 整合 dubbo | [Dubbo ](http://dubbo.apache.org/zh-cn/docs/user/quick-start.html) |
| [spring-websocket](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-websocket)
[spring-websocket-annotation](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-websocket-annotation) | spring 整合 websocket | [Spring Websocket](https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/web.html#websocket) |
| [spring-mail](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-email)
[spring-mail-annotation](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-email-annotation) | spring 普通文本邮件、附件邮件、模板邮件 | [Spring Email](https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/integration.html#mail) |
| [spring-scheduling](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-scheduling)
[spring-scheduling-annotation](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring/spring-scheduling-annotation) | spring 定时任务 | [Task Execution and Scheduling](https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/integration.html#scheduling) |
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-common/pom.xml b/spring/spring-dubbo-annotation/dubbo-ano-common/pom.xml
new file mode 100644
index 0000000..ddf9e07
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-common/pom.xml
@@ -0,0 +1,15 @@
+
+
+
+ spring-dubbo-annotation
+ com.heibaiying
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ dubbo-ano-common
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-common/src/main/java/com/heibaiying/api/IProductService.java b/spring/spring-dubbo-annotation/dubbo-ano-common/src/main/java/com/heibaiying/api/IProductService.java
new file mode 100644
index 0000000..46f2530
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-common/src/main/java/com/heibaiying/api/IProductService.java
@@ -0,0 +1,16 @@
+package com.heibaiying.api;
+
+import com.heibaiying.bean.Product;
+
+import java.util.List;
+
+/**
+ * @author : heibaiying
+ * @description : 产品服务接口类
+ */
+public interface IProductService {
+
+ Product queryProductById(int id);
+
+ List queryAllProducts();
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-common/src/main/java/com/heibaiying/bean/Product.java b/spring/spring-dubbo-annotation/dubbo-ano-common/src/main/java/com/heibaiying/bean/Product.java
new file mode 100644
index 0000000..8e85bf0
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-common/src/main/java/com/heibaiying/bean/Product.java
@@ -0,0 +1,33 @@
+package com.heibaiying.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author : heibaiying
+ * @description : 产品实体类
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Product implements Serializable {
+
+ // 产品序列号
+ private int id;
+
+ // 产品名称
+ private String name;
+
+ // 是否贵重品
+ private Boolean isPrecious;
+
+ //生产日期
+ private Date dateInProduced;
+
+ //产品价格
+ private float price;
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-consumer/pom.xml b/spring/spring-dubbo-annotation/dubbo-ano-consumer/pom.xml
new file mode 100644
index 0000000..dffc9ba
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-consumer/pom.xml
@@ -0,0 +1,23 @@
+
+
+
+ spring-dubbo-annotation
+ com.heibaiying
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ dubbo-ano-consumer
+
+
+
+ com.heibaiying
+ dubbo-ano-common
+ 1.0-SNAPSHOT
+ compile
+
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java
new file mode 100644
index 0000000..229e828
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java
@@ -0,0 +1,22 @@
+package com.heibaiying.config;
+
+import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
+
+/**
+ * @author : heibaiying
+ * @description : 前端过滤器配置
+ */
+public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
+
+ protected Class>[] getRootConfigClasses() {
+ return new Class[0];
+ }
+
+ protected Class>[] getServletConfigClasses() {
+ return new Class[]{ServletConfig.class};
+ }
+
+ protected String[] getServletMappings() {
+ return new String[]{"/"};
+ }
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/ServletConfig.java b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/ServletConfig.java
new file mode 100644
index 0000000..e53a4a9
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/ServletConfig.java
@@ -0,0 +1,42 @@
+package com.heibaiying.config;
+
+import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.ViewResolver;
+import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.view.InternalResourceViewResolver;
+
+/**
+ * @author : heibaiying
+ * @description : 主配置类
+ */
+@Configuration
+@EnableWebMvc
+@DubboComponentScan(basePackages = "com.heibaiying.controller") // 扫描dubbo注解
+@ComponentScan(basePackages = {"com.heibaiying.*"})
+public class ServletConfig implements WebMvcConfigurer {
+
+ /**
+ * 配置视图解析器
+ */
+ @Bean
+ public ViewResolver viewResolver() {
+ InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
+ internalResourceViewResolver.setPrefix("/WEB-INF/jsp/");
+ internalResourceViewResolver.setSuffix(".jsp");
+ internalResourceViewResolver.setExposeContextBeansAsAttributes(true);
+ return internalResourceViewResolver;
+ }
+
+ /**
+ * 配置静态资源处理器
+ */
+ public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
+ configurer.enable();
+ }
+
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/dubbo/DubboConfiguration.java b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/dubbo/DubboConfiguration.java
new file mode 100644
index 0000000..4185405
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/config/dubbo/DubboConfiguration.java
@@ -0,0 +1,47 @@
+package com.heibaiying.config.dubbo;
+
+import com.alibaba.dubbo.config.ApplicationConfig;
+import com.alibaba.dubbo.config.ConsumerConfig;
+import com.alibaba.dubbo.config.ProtocolConfig;
+import com.alibaba.dubbo.config.RegistryConfig;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author : heibaiying
+ * @description : dubbo 配置类
+ */
+@Configuration
+public class DubboConfiguration {
+
+ @Bean
+ public ApplicationConfig applicationConfig() {
+ ApplicationConfig applicationConfig = new ApplicationConfig();
+ applicationConfig.setName("dubbo-ano-consumer");
+ return applicationConfig;
+ }
+
+ @Bean
+ public ConsumerConfig consumerConfig() {
+ ConsumerConfig consumerConfig = new ConsumerConfig();
+ consumerConfig.setTimeout(3000);
+ consumerConfig.setCheck(false);
+ return consumerConfig;
+ }
+
+ @Bean
+ public RegistryConfig registryConfig() {
+ RegistryConfig registryConfig = new RegistryConfig();
+ registryConfig.setAddress("zookeeper://127.0.0.1:2181");
+ registryConfig.setClient("curator");
+ return registryConfig;
+ }
+
+ @Bean
+ public ProtocolConfig protocolConfig() {
+ ProtocolConfig protocolConfig = new ProtocolConfig();
+ protocolConfig.setName("dubbo");
+ protocolConfig.setPort(20880);
+ return protocolConfig;
+ }
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/controller/SellController.java b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/controller/SellController.java
new file mode 100644
index 0000000..2444fa0
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/java/com/heibaiying/controller/SellController.java
@@ -0,0 +1,38 @@
+package com.heibaiying.controller;
+
+import com.alibaba.dubbo.config.annotation.Reference;
+import com.heibaiying.api.IProductService;
+import com.heibaiying.bean.Product;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import java.util.List;
+
+/**
+ * @author : heibaiying
+ * @description :
+ */
+@Controller
+@RequestMapping("sell")
+public class SellController {
+
+ // dubbo远程引用注解
+ @Reference
+ private IProductService productService;
+
+ @RequestMapping
+ public String productList(Model model) {
+ List products = productService.queryAllProducts();
+ model.addAttribute("products", products);
+ return "products";
+ }
+
+ @RequestMapping("product/{id}")
+ public String productDetail(@PathVariable int id, Model model) {
+ Product product = productService.queryProductById(id);
+ model.addAttribute("product", product);
+ return "product";
+ }
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/jsp/product.jsp b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/jsp/product.jsp
new file mode 100644
index 0000000..c1c1a4e
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/jsp/product.jsp
@@ -0,0 +1,17 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+
+
+
+ 产品详情
+
+
+
+ - 产品名称:${product.name}
+ - 产品序列号:${product.id}
+ - 是否贵重品:${product.isPrecious?"是":"否"}
+ - 生产日期:
+ - 产品价格:${product.price}
+
+
+
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/jsp/products.jsp b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/jsp/products.jsp
new file mode 100644
index 0000000..a5a42fb
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/jsp/products.jsp
@@ -0,0 +1,17 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+
+ 产品列表
+
+
+产品列表:点击查看详情
+
+
+
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/web.xml b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d80081d
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/index.jsp b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/index.jsp
new file mode 100644
index 0000000..bf36266
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-consumer/src/main/webapp/index.jsp
@@ -0,0 +1,9 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ Title
+
+
+ hello dubbo consumer!
+
+
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-provider/pom.xml b/spring/spring-dubbo-annotation/dubbo-ano-provider/pom.xml
new file mode 100644
index 0000000..5f82f20
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-provider/pom.xml
@@ -0,0 +1,40 @@
+
+
+
+ spring-dubbo-annotation
+ com.heibaiying
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ dubbo-ano-provider
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ 1.8
+ 1.8
+
+
+
+
+
+
+
+
+ com.heibaiying
+ dubbo-ano-common
+ 1.0-SNAPSHOT
+
+ compile
+
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java
new file mode 100644
index 0000000..585d77f
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/DispatcherServletInitializer.java
@@ -0,0 +1,22 @@
+package com.heibaiying.config;
+
+import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
+
+/**
+ * @author : heibaiying
+ * @description :
+ */
+public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
+
+ protected Class>[] getRootConfigClasses() {
+ return new Class[0];
+ }
+
+ protected Class>[] getServletConfigClasses() {
+ return new Class[]{ServletConfig.class};
+ }
+
+ protected String[] getServletMappings() {
+ return new String[]{"/"};
+ }
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/ServletConfig.java b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/ServletConfig.java
new file mode 100644
index 0000000..11d0ebf
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/ServletConfig.java
@@ -0,0 +1,23 @@
+package com.heibaiying.config;
+
+import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.ViewResolver;
+import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.view.InternalResourceViewResolver;
+
+/**
+ * @author : heibaiying
+ * @description : 主配置类
+ */
+@Configuration
+@EnableWebMvc
+@DubboComponentScan(basePackages = "com.heibaiying.service") // 扫描dubbo注解
+@ComponentScan(basePackages = {"com.heibaiying.*"})
+public class ServletConfig implements WebMvcConfigurer {
+
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/dubbo/DubboConfiguration.java b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/dubbo/DubboConfiguration.java
new file mode 100644
index 0000000..1d295f7
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/config/dubbo/DubboConfiguration.java
@@ -0,0 +1,29 @@
+package com.heibaiying.config.dubbo;
+
+import com.alibaba.dubbo.config.ApplicationConfig;
+import com.alibaba.dubbo.config.RegistryConfig;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author : heibaiying
+ * @description : dubbo 配置类
+ */
+@Configuration
+public class DubboConfiguration {
+
+ @Bean
+ public ApplicationConfig applicationConfig() {
+ ApplicationConfig applicationConfig = new ApplicationConfig();
+ applicationConfig.setName("dubbo-ano-provider");
+ return applicationConfig;
+ }
+
+ @Bean
+ public RegistryConfig registryConfig() {
+ RegistryConfig registryConfig = new RegistryConfig();
+ registryConfig.setAddress("zookeeper://127.0.0.1:2181");
+ registryConfig.setClient("curator");
+ return registryConfig;
+ }
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/service/ProductService.java b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/service/ProductService.java
new file mode 100644
index 0000000..fbecffb
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/java/com/heibaiying/service/ProductService.java
@@ -0,0 +1,40 @@
+package com.heibaiying.service;
+
+import com.alibaba.dubbo.config.annotation.Service;
+import com.heibaiying.api.IProductService;
+import com.heibaiying.bean.Product;
+
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author : heibaiying
+ * @description : 产品提供接口实现类
+ */
+@Service(timeout = 5000)
+public class ProductService implements IProductService {
+
+ private static List productList = new ArrayList<>();
+
+ static {
+ for (int i = 0; i < 20; i++) {
+ productList.add(new Product(i, "产品" + i, i / 2 == 0, new Date(), 66.66f * i));
+ }
+ }
+
+ public Product queryProductById(int id) {
+ for (Product product : productList) {
+ if (product.getId() == id) {
+ return product;
+ }
+ }
+ return null;
+ }
+
+
+ public List queryAllProducts() {
+ return productList;
+ }
+}
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/webapp/WEB-INF/web.xml b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d80081d
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/webapp/index.jsp b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/webapp/index.jsp
new file mode 100644
index 0000000..3e6dc03
--- /dev/null
+++ b/spring/spring-dubbo-annotation/dubbo-ano-provider/src/main/webapp/index.jsp
@@ -0,0 +1,9 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ Title
+
+
+ hello dubbo provider!
+
+
diff --git a/spring/spring-dubbo-annotation/pom.xml b/spring/spring-dubbo-annotation/pom.xml
new file mode 100644
index 0000000..875865b
--- /dev/null
+++ b/spring/spring-dubbo-annotation/pom.xml
@@ -0,0 +1,98 @@
+
+
+ 4.0.0
+
+ com.heibaiying
+ spring-dubbo-annotation
+ pom
+ 1.0-SNAPSHOT
+
+
+ dubbo-ano-consumer
+ dubbo-ano-provider
+ dubbo-ano-common
+
+
+
+ 5.1.3.RELEASE
+
+
+
+
+ org.springframework
+ spring-context
+ ${spring-base-version}
+
+
+ org.springframework
+ spring-beans
+ ${spring-base-version}
+
+
+ org.springframework
+ spring-core
+ ${spring-base-version}
+
+
+ org.springframework
+ spring-web
+ ${spring-base-version}
+
+
+ org.springframework
+ spring-webmvc
+ ${spring-base-version}
+
+
+ javax.servlet
+ javax.servlet-api
+ 4.0.1
+ provided
+
+
+ org.projectlombok
+ lombok
+ 1.18.4
+ provided
+
+
+
+ taglibs
+ standard
+ 1.1.2
+
+
+ javax.servlet
+ jstl
+ 1.2
+
+
+
+ com.alibaba
+ dubbo
+ 2.6.2
+
+
+ org.apache.curator
+ curator-framework
+ 4.0.0
+
+
+
+ org.apache.zookeeper
+ zookeeper
+
+
+
+
+ org.apache.zookeeper
+ zookeeper
+ 3.4.13
+
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-common/pom.xml b/spring/spring-dubbo/dubbo-common/pom.xml
new file mode 100644
index 0000000..f3b504b
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-common/pom.xml
@@ -0,0 +1,15 @@
+
+
+
+ spring-dubbo
+ com.heibaiying
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ dubbo-common
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-common/src/main/java/com/heibaiying/api/IProductService.java b/spring/spring-dubbo/dubbo-common/src/main/java/com/heibaiying/api/IProductService.java
new file mode 100644
index 0000000..46f2530
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-common/src/main/java/com/heibaiying/api/IProductService.java
@@ -0,0 +1,16 @@
+package com.heibaiying.api;
+
+import com.heibaiying.bean.Product;
+
+import java.util.List;
+
+/**
+ * @author : heibaiying
+ * @description : 产品服务接口类
+ */
+public interface IProductService {
+
+ Product queryProductById(int id);
+
+ List queryAllProducts();
+}
diff --git a/spring/spring-dubbo/dubbo-common/src/main/java/com/heibaiying/bean/Product.java b/spring/spring-dubbo/dubbo-common/src/main/java/com/heibaiying/bean/Product.java
new file mode 100644
index 0000000..8e85bf0
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-common/src/main/java/com/heibaiying/bean/Product.java
@@ -0,0 +1,33 @@
+package com.heibaiying.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author : heibaiying
+ * @description : 产品实体类
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Product implements Serializable {
+
+ // 产品序列号
+ private int id;
+
+ // 产品名称
+ private String name;
+
+ // 是否贵重品
+ private Boolean isPrecious;
+
+ //生产日期
+ private Date dateInProduced;
+
+ //产品价格
+ private float price;
+}
diff --git a/spring/spring-dubbo/dubbo-consumer/pom.xml b/spring/spring-dubbo/dubbo-consumer/pom.xml
new file mode 100644
index 0000000..a46f014
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-consumer/pom.xml
@@ -0,0 +1,23 @@
+
+
+
+ spring-dubbo
+ com.heibaiying
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ dubbo-consumer
+
+
+
+ com.heibaiying
+ dubbo-common
+ 1.0-SNAPSHOT
+ compile
+
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-consumer/src/main/java/com/heibaiying/controller/SellController.java b/spring/spring-dubbo/dubbo-consumer/src/main/java/com/heibaiying/controller/SellController.java
new file mode 100644
index 0000000..8d6f2a6
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-consumer/src/main/java/com/heibaiying/controller/SellController.java
@@ -0,0 +1,37 @@
+package com.heibaiying.controller;
+
+import com.heibaiying.api.IProductService;
+import com.heibaiying.bean.Product;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import java.util.List;
+
+/**
+ * @author : heibaiying
+ * @description :
+ */
+@Controller
+@RequestMapping("sell")
+public class SellController {
+
+ @Autowired
+ private IProductService productService;
+
+ @RequestMapping
+ public String productList(Model model) {
+ List products = productService.queryAllProducts();
+ model.addAttribute("products", products);
+ return "products";
+ }
+
+ @RequestMapping("product/{id}")
+ public String productDetail(@PathVariable int id, Model model) {
+ Product product = productService.queryProductById(id);
+ model.addAttribute("product", product);
+ return "product";
+ }
+}
diff --git a/spring/spring-dubbo/dubbo-consumer/src/main/resources/dubbo.xml b/spring/spring-dubbo/dubbo-consumer/src/main/resources/dubbo.xml
new file mode 100644
index 0000000..7bb8e0c
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-consumer/src/main/resources/dubbo.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-consumer/src/main/resources/springApplication.xml b/spring/spring-dubbo/dubbo-consumer/src/main/resources/springApplication.xml
new file mode 100644
index 0000000..10d18c0
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-consumer/src/main/resources/springApplication.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/jsp/product.jsp b/spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/jsp/product.jsp
new file mode 100644
index 0000000..c1c1a4e
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/jsp/product.jsp
@@ -0,0 +1,17 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+
+
+
+ 产品详情
+
+
+
+ - 产品名称:${product.name}
+ - 产品序列号:${product.id}
+ - 是否贵重品:${product.isPrecious?"是":"否"}
+ - 生产日期:
+ - 产品价格:${product.price}
+
+
+
diff --git a/spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/jsp/products.jsp b/spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/jsp/products.jsp
new file mode 100644
index 0000000..a5a42fb
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/jsp/products.jsp
@@ -0,0 +1,17 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+
+ 产品列表
+
+
+产品列表:点击查看详情
+
+
+
diff --git a/spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/web.xml b/spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..f8bc55e
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-consumer/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ contextConfigLocation
+ classpath:springApplication.xml
+
+
+
+
+ springMvc
+ org.springframework.web.servlet.DispatcherServlet
+
+ contextConfigLocation
+ classpath:springApplication.xml
+
+ 1
+
+
+
+ springMvc
+ /
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-consumer/src/main/webapp/index.jsp b/spring/spring-dubbo/dubbo-consumer/src/main/webapp/index.jsp
new file mode 100644
index 0000000..bf36266
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-consumer/src/main/webapp/index.jsp
@@ -0,0 +1,9 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ Title
+
+
+ hello dubbo consumer!
+
+
diff --git a/spring/spring-dubbo/dubbo-provider/pom.xml b/spring/spring-dubbo/dubbo-provider/pom.xml
new file mode 100644
index 0000000..79c19cc
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-provider/pom.xml
@@ -0,0 +1,40 @@
+
+
+
+ spring-dubbo
+ com.heibaiying
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ dubbo-provider
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ 1.8
+ 1.8
+
+
+
+
+
+
+
+
+ com.heibaiying
+ dubbo-common
+ 1.0-SNAPSHOT
+
+ compile
+
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-provider/src/main/java/com/heibaiying/service/ProductService.java b/spring/spring-dubbo/dubbo-provider/src/main/java/com/heibaiying/service/ProductService.java
new file mode 100644
index 0000000..3830a77
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-provider/src/main/java/com/heibaiying/service/ProductService.java
@@ -0,0 +1,39 @@
+package com.heibaiying.service;
+
+import com.heibaiying.api.IProductService;
+import com.heibaiying.bean.Product;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author : heibaiying
+ * @description : 产品提供接口实现类
+ */
+@Service
+public class ProductService implements IProductService {
+
+ private static List productList = new ArrayList<>();
+
+ static {
+ for (int i = 0; i < 20; i++) {
+ productList.add(new Product(i, "产品" + i, i / 2 == 0, new Date(), 66.66f * i));
+ }
+ }
+
+ public Product queryProductById(int id) {
+ for (Product product : productList) {
+ if (product.getId() == id) {
+ return product;
+ }
+ }
+ return null;
+ }
+
+
+ public List queryAllProducts() {
+ return productList;
+ }
+}
diff --git a/spring/spring-dubbo/dubbo-provider/src/main/resources/dubbo.xml b/spring/spring-dubbo/dubbo-provider/src/main/resources/dubbo.xml
new file mode 100644
index 0000000..f299494
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-provider/src/main/resources/dubbo.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-provider/src/main/resources/springApplication.xml b/spring/spring-dubbo/dubbo-provider/src/main/resources/springApplication.xml
new file mode 100644
index 0000000..0cb103a
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-provider/src/main/resources/springApplication.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-provider/src/main/webapp/WEB-INF/web.xml b/spring/spring-dubbo/dubbo-provider/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..f8bc55e
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-provider/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ contextConfigLocation
+ classpath:springApplication.xml
+
+
+
+
+ springMvc
+ org.springframework.web.servlet.DispatcherServlet
+
+ contextConfigLocation
+ classpath:springApplication.xml
+
+ 1
+
+
+
+ springMvc
+ /
+
+
+
\ No newline at end of file
diff --git a/spring/spring-dubbo/dubbo-provider/src/main/webapp/index.jsp b/spring/spring-dubbo/dubbo-provider/src/main/webapp/index.jsp
new file mode 100644
index 0000000..3e6dc03
--- /dev/null
+++ b/spring/spring-dubbo/dubbo-provider/src/main/webapp/index.jsp
@@ -0,0 +1,9 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ Title
+
+
+ hello dubbo provider!
+
+
diff --git a/spring/spring-dubbo/pom.xml b/spring/spring-dubbo/pom.xml
new file mode 100644
index 0000000..49e2118
--- /dev/null
+++ b/spring/spring-dubbo/pom.xml
@@ -0,0 +1,98 @@
+
+
+ 4.0.0
+
+ com.heibaiying
+ spring-dubbo
+ pom
+ 1.0-SNAPSHOT
+
+
+ dubbo-consumer
+ dubbo-provider
+ dubbo-common
+
+
+
+ 5.1.3.RELEASE
+
+
+
+
+ org.springframework
+ spring-context
+ ${spring-base-version}
+
+
+ org.springframework
+ spring-beans
+ ${spring-base-version}
+
+
+ org.springframework
+ spring-core
+ ${spring-base-version}
+
+
+ org.springframework
+ spring-web
+ ${spring-base-version}
+
+
+ org.springframework
+ spring-webmvc
+ ${spring-base-version}
+
+
+ javax.servlet
+ javax.servlet-api
+ 4.0.1
+ provided
+
+
+ org.projectlombok
+ lombok
+ 1.18.4
+ provided
+
+
+
+ taglibs
+ standard
+ 1.1.2
+
+
+ javax.servlet
+ jstl
+ 1.2
+
+
+
+ com.alibaba
+ dubbo
+ 2.6.2
+
+
+ org.apache.curator
+ curator-framework
+ 4.0.0
+
+
+
+ org.apache.zookeeper
+ zookeeper
+
+
+
+
+ org.apache.zookeeper
+ zookeeper
+ 3.4.13
+
+
+
+
\ No newline at end of file