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" %> + + + + 产品详情 + + + + + 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