优化点:
1.在上面provider和consumer程序中都存在DemoProviderService接口了,两个项目中存在同样的东西,代码多余以及不方便管理;
正式的项目中存在很多的接口的,将统一的公共的抽取出来;
2.provider和consumer中存在很多相同的依赖;利用maven的继承统一的管理依赖和版本;
抽取公共的依赖;
 
 
1、项目结构变为了;
 
2.将公共的interface DemoProviderService放到dubbo-api项目里面了,consumer和provider项目都引用这个jar;
 
3.dubbo-parent的pom.xml:
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.cy</groupId>
  4. <artifactId>dubbo-parent</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <packaging>pom</packaging>
  7.  
  8. <!-- 依赖版本管理 -->
  9. <properties>
  10. <dubbo-api.version>0.0.1-SNAPSHOT</dubbo-api.version>
  11. <dubbo.version>2.6.0</dubbo.version>
  12. <zkclient.version>0.10</zkclient.version>
  13. <curator-framework.version>4.0.1</curator-framework.version>
  14. <fastjson.version>1.2.46</fastjson.version>
  15. <log4j.version>1.2.17</log4j.version>
  16. <slf4j-api.version>1.7.25</slf4j-api.version>
  17. <commons-lang3.version>3.4</commons-lang3.version>
  18. <netty-all.version>4.0.35.Final</netty-all.version>
  19. </properties>
  20.  
  21. <!-- 依赖管理 仅仅定义 -->
  22. <dependencyManagement>
  23. <dependencies>
  24. <dependency>
  25. <groupId>com.cy</groupId>
  26. <artifactId>dubbo-api</artifactId>
  27. <version>${dubbo-api.version}</version>
  28. </dependency>
  29. <dependency>
  30. <groupId>com.alibaba</groupId>
  31. <artifactId>dubbo</artifactId>
  32. <version>${dubbo.version}</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>com.101tec</groupId>
  36. <artifactId>zkclient</artifactId>
  37. <version>${zkclient.version}</version>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.apache.curator</groupId>
  41. <artifactId>curator-framework</artifactId>
  42. <version>${curator-framework.version}</version>
  43. </dependency>
  44. <dependency>
  45. <groupId>com.alibaba</groupId>
  46. <artifactId>fastjson</artifactId>
  47. <version>${fastjson.version}</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>log4j</groupId>
  51. <artifactId>log4j</artifactId>
  52. <version>${log4j.version}</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>org.slf4j</groupId>
  56. <artifactId>slf4j-api</artifactId>
  57. <version>${slf4j-api.version}</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.apache.commons</groupId>
  61. <artifactId>commons-lang3</artifactId>
  62. <version>${commons-lang3.version}</version>
  63. </dependency>
  64. <dependency>
  65. <groupId>io.netty</groupId>
  66. <artifactId>netty-all</artifactId>
  67. <version>${netty-all.version}</version>
  68. </dependency>
  69. </dependencies>
  70. </dependencyManagement>
  71.  
  72. <modules>
  73. <module>../dubbo-api</module>
  74. <module>../dubbo-provider</module>
  75. <module>../dubbo-consumer</module>
  76. </modules>
  77.  
  78. </project>

4.dubbo-api的pom.xml:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3.  
  4. <parent>
  5. <groupId>com.cy</groupId>
  6. <artifactId>dubbo-parent</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. </parent>
  9.  
  10. <artifactId>dubbo-api</artifactId>
  11.  
  12. </project>

5.dubbo-provider的pom.xml:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3.  
  4. <parent>
  5. <groupId>com.cy</groupId>
  6. <artifactId>dubbo-parent</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. </parent>
  9.  
  10. <artifactId>dubbo-provider</artifactId>
  11.  
  12. <dependencies>
  13. <dependency>
  14. <groupId>com.cy</groupId>
  15. <artifactId>dubbo-api</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>com.alibaba</groupId>
  19. <artifactId>dubbo</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>com.101tec</groupId>
  23. <artifactId>zkclient</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.apache.curator</groupId>
  27. <artifactId>curator-framework</artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>com.alibaba</groupId>
  31. <artifactId>fastjson</artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>log4j</groupId>
  35. <artifactId>log4j</artifactId>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.slf4j</groupId>
  39. <artifactId>slf4j-api</artifactId>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.apache.commons</groupId>
  43. <artifactId>commons-lang3</artifactId>
  44. </dependency>
  45. <dependency>
  46. <groupId>io.netty</groupId>
  47. <artifactId>netty-all</artifactId>
  48. </dependency>
  49. </dependencies>
  50.  
  51. </project>

6.dubbo-consumer的pom.xml:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <parent>
  4. <groupId>com.cy</groupId>
  5. <artifactId>dubbo-parent</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. </parent>
  8.  
  9. <artifactId>dubbo-consumer</artifactId>
  10.  
  11. <dependencies>
  12. <dependency>
  13. <groupId>com.cy</groupId>
  14. <artifactId>dubbo-api</artifactId>
  15. </dependency>
  16. <dependency>
  17. <groupId>com.alibaba</groupId>
  18. <artifactId>dubbo</artifactId>
  19. </dependency>
  20. <dependency>
  21. <groupId>com.101tec</groupId>
  22. <artifactId>zkclient</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.apache.curator</groupId>
  26. <artifactId>curator-framework</artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>com.alibaba</groupId>
  30. <artifactId>fastjson</artifactId>
  31. </dependency>
  32. <dependency>
  33. <groupId>log4j</groupId>
  34. <artifactId>log4j</artifactId>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.slf4j</groupId>
  38. <artifactId>slf4j-api</artifactId>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.apache.commons</groupId>
  42. <artifactId>commons-lang3</artifactId>
  43. </dependency>
  44. <dependency>
  45. <groupId>io.netty</groupId>
  46. <artifactId>netty-all</artifactId>
  47. </dependency>
  48. </dependencies>
  49.  
  50. </project>

测试ok

 
 
 

Dubbo(5)优化:接口抽取以及依赖版本统一的更多相关文章

  1. 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例

    查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...

  2. Maven依赖版本冲突的分析及解决小结

    1:前言 做软件开发这几年遇到了许多的问题,也总结了一些问题的解决之道,之后慢慢的再遇到的都是一些重复性的问题了,当然,还有一些自己没有完全弄明白的问题.如果做的事情是重复的,遇到重复性问题的概率也就 ...

  3. CDH5.16.1的maven依赖版本查询地址

    1查询官网地址,提供了详细的各个版本的jar依赖版本信息 https://www.cloudera.com/documentation/enterprise/release-notes/topics/ ...

  4. Maven 3-Maven依赖版本冲突的分析及解决小结 (阿里,美团,京东面试)

    举例A依赖于B及C,而B又依赖于X.Y,而C依赖于X.M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过<scope>等若干种方式控制传递依赖).这里 ...

  5. Error:依赖版本不一致

    在编译unity时发现一个问题:依赖版本不一致 解决方案: 通过nugut管理在已安装项里选中要更新的dll文件

  6. maven 使用dependencyManagement统一管理依赖版本

    今日思语:人生方方长长,努力把她磨成方圆,所以 加油咯~ 使用maven可以很方便的进行项目依赖的管理,即可以管理我们显示引入具体版本的依赖,也可以管理某些第三方引入的一些依赖的版本,从而能更好的实现 ...

  7. 急~为啥我指定的的maven依赖版本没有生效?不是最短路径原则吗?

    女朋友他们项目用了 spring-boot,以 spring-boot-parent 作为 parent: <parent> <groupId>org.springframew ...

  8. Maven多模块开发SpringBoot项目自定义第三方依赖版本

    参考:官方文档 - Build System of Maven https://blog.didispace.com/books/spring-boot-reference/IX. 'How-to' ...

  9. Go版本依赖--版本选择机制

    目录 1. 版本选择机制 2.依赖包版本约定 2.1 Go module 之前版本兼容性 2.2 Go module 之后版本兼容性 3. 版本选择机制 3.1 最新版本选择 3.2 最小版本选择 1 ...

随机推荐

  1. SQLI DUMB SERIES-6

    less6 输入 ?id=1" 说明双引号未被过滤,输入的id被一对双引号所包围,存在注入点,可以闭合双引号. 而输入正常时 情况和less5相同,因此注入同less5.

  2. ZOJ 1006:Do the Untwist(模拟)

    Do the Untwist Time Limit: 2 Seconds      Memory Limit: 65536 KB Cryptography deals with methods of ...

  3. 《DSP using MATLAB》Problem 5.7

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  4. python str使用笔记(更新)

    判断字符串是否以某个串为结尾: str.endswith(strtmp) 返回True/False >>> strs='aba' >>> strs.endswith ...

  5. MySQL Transaction--事务相关查询

    MySQL支持的四种事务隔离级别 READ-UNCOMMITTED READ-COMMITTED REPEATABLE-READ SERIALIZABLE 查看全局事务隔离级别和会话事务隔离级别 SH ...

  6. gitingore && opensource license 自动生成的网站

    老外就是爱搞事情,总有一些方便我们开发的小工具出来,比如gitignore以及开源软件许可协议的 gitingore 生成的 地址 https://www.gitignore.io/ 使用 搜索的地方 ...

  7. NSNull floatValue intValue 找不到指定方法解决方式

    最近遇到一个问题:         因为后台人员对于接口数据没有做空值处理.导致client接收到的有些数据为空(NSNull),而针对此类数据恰好client的存储结构为int和float类型.类型 ...

  8. windows 8,关闭随意窗体都提示“已停止工作”的解决的方法

           电脑用的好好的,突然出现了关闭随意窗体都提示"已停止工作",每次都是这样.想想也就是偶尔优化一下,近期也没有改动过什么系统设置呀,突然想到昨晚JLink_V8固件丢失 ...

  9. Python---Pycharm如何直接上传自己的代码到GitHub

    请提前到官网注册GitHub账号,提前在terminal或者cmd安装git,然后你要检测自己电脑是否存在 SSH key,然后需要把SSH key复制下来,粘贴到你的GitHub. - 第一步:安装 ...

  10. create-react-app 搭建的项目中,引入 webpack-bundle-analyzer 打包分析

    安装npm intall webpack-bundle-analyzer --save-dev 在 config/webpack.config.prod.js 文件(推荐)或 config/webpa ...