Dubbo 项目学习(四) 接口抽取以及依赖版本统一

引言

  前面的系列项目中,我们会发现有个接口是一样的,我们需要单独抽取出来,统一维护,这样可以更加高效的处理项目。同时,两个项目的maven依赖包也可以统一维护,这样有助于项目在多人协作的同时,保证项目依赖的统一性。

系列文档目录

Dubbo 项目学习(一) Admin 管理控制台

Dubbo 项目学习(二) 发布Dubbo服务

Dubbo 项目学习(三) 消费Dubbo服务

Dubbo 项目学习(四) 接口抽取及以来版本统一

创建父工程

  我们新建一个dubbo-parent项目,作为父级工程,用于统一管理项目中依赖包的版本。(新建完的项目可以只保留pom.xml文件即可)

  修改pom.xml文件中的packing属性为pom,以及配置对应参数;同时配置我们之前项目中需要用到的包,如下所示:

    <!--  包版本管理  -->
    <properties>
        <dubbo.version>2.6.0</dubbo.version>
        <zkclient.version>0.10</zkclient.version>
        <curator-framework.version>4.0.1</curator-framework.version>
        <fastjson.version>1.2.46</fastjson.version>
        <log4j.version>1.2.17</log4j.version>
        <slf4j-api.version>1.7.25</slf4j-api.version>
        <commons-lang3.version>3.4</commons-lang3.version>
        <netty-all.version>4.0.35.Final</netty-all.version>
    </properties>

    <!--  依赖管理  -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>com.101tec</groupId>
                <artifactId>zkclient</artifactId>
                <version>${zkclient.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-framework</artifactId>
                <version>${curator-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j-api.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-all</artifactId>
                <version>${netty-all.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

创建子工程

公共接口子工程

  右击dubbo-parent项目,创建一个新的dubbo-api项目,作为公共接口(这里例举之前搭建的接口)

  1. 修改pom.xml文件,去除多余配置,并依赖dubbo-parent项目

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>dubbo-api</artifactId>
    <parent>
        <groupId>com.dubbo</groupId>
        <artifactId>dubbo-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
</project>

  2. 修改dubbo-parent项目中的pom.xml文件,配置modules,添加子工程名称

  3. 最后,在dubbo-api项目中,创建公共业务接口

package com.dubbo.service;

/**
 * 公共接口:服务发布者
 */
public interface DemoProviderService {

    public String sayHello(String name);
}

发布服务子工程

  同理,右击dubbo-parent项目,创建一个新的dubbo-provider项目,作为服务提供者,用于实现dubbo-api中定义的接口

  1.  修改pom.xml文件,去除多余配置,并依赖dubbo-parent项目,同时添加父工程中定义的依赖包

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>dubbo-provider</artifactId>

    <parent>
        <groupId>com.dubbo</groupId>
        <artifactId>dubbo-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>com.dubbo</groupId>
            <artifactId>dubbo-api</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
        </dependency>
    </dependencies>

</project>

  2.  修改dubbo-parent项目中的pom.xml文件,配置modules,添加子工程名称(省略截图……)

  3.  创建接口实现类 DemoProviderServiceImpl

package com.dubbo.service.impl;

import com.dubbo.service.DemoProviderService;

/**
 * 发布者实现服务内部逻辑
 */
public class DemoProviderServiceImpl implements DemoProviderService {

    public String sayHello(String name) {
        return "服务员001";
    }
}

  4.  创建测试类,运行测试注册服务

  运行测试,服务提供者注册成功。

消费服务子工程

  同理,右击dubbo-parent项目,创建一个新的dubbo-consumer项目,作为服务消费者,用于调用dubbo-provider提供的服务

  1.  修改pom.xml文件,去除多余配置,并依赖dubbo-parent项目,同时添加父工程中定义的依赖包(代码截图省略……)

  2.  修改dubbo-parent项目中的pom.xml文件,配置modules,添加子工程名称(省略截图……)

  3.  编写测试类,调用dubbo-provider提供的服务

  4.  运行测试,输出远程调用结果

  最终,测试OK

原文地址:https://www.cnblogs.com/huanghzm/p/11460797.html

时间: 2024-10-26 11:41:18

Dubbo 项目学习(四) 接口抽取以及依赖版本统一的相关文章

Dubbo 项目学习(二) 发布Dubbo服务

引言 本文主要来学习下发布Dubbo服务,主要参考dubbo开发包里面的demo源码:由浅入深的讲解下这个demo. 配置依赖 首先创建一个maven项目dubbo-demo-provider(基于springBoot),修改pom.xml配置依赖项目,引入所需要的包. <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>

Maven学习笔记(四):坐标与依赖

Maven坐标详解: Maven定义了这样一组规则:世界上任何一个构件都可以使用Maven坐标唯一标识,Maven坐标的元素包括groupId.artifactId.version.packaging.classifier.我们只需要提供正确的坐标元素,Maven就能找到对应的构件.比如当需要使用Java5平台上的TestNG的5.8版本时,就告诉Maven:"groupId=org.testng; artifactId=testng; version=5.8; classifer=jdk15,

【git学习四】git基础之git为项目打标签

1.背景 今天学习了下如何给项目打标签,为此项目的修改标记版本号,然后可以直接推送版本号到服务器上,方便了很多,而且便于对项目进行管理. 2.打标签 1.查询已有标签,可以使用git tag命令,查询某个特定版本可以git tag -l 'v*' git tag 2.为版本创建标签 git tag -a v1.4 -m 'my version 1.4' 3.查看添加的标签,git show命令 git show 4.也可以对之前的某次commit加标签 git tag -a v1.2 9fceb

Maven学习笔记(四):协调和依赖

Maven协调具体的解释: Maven定义了这样一组规则:世界上不论什么一个构件都能够使用Maven坐标唯一标识.Maven坐标的元素包含groupId.artifactId.version.packaging.classifier.我们仅仅须要提供正确的坐标元素,Maven就能找到相应的构件.比方当须要使用Java5平台上的TestNG的5.8版本号时,就告诉Maven:"groupId=org.testng; artifactId=testng; version=5.8; classifer

[Prodinner项目]学习分享_第四部分(完结篇)_Controller层(控制器)

Controller作用: 数据从数据库查询出来后,通过一定的业务逻辑,筛选出来一个结果集,我们最终的目的是要将这个结果集在页面中显示的. Controller就是起到这个作用,将业务逻辑层的结果集调出来,然后通过Model,或者Json的方式返回到View(页面)里. 1.我们需要创建一个Conroller,继承封装好的BaseController. 2.将之前写好的PersonService实例化. 3.获取结果集. -PersonService里有CrudService封装好的,增删改查常

Maven学习归纳(三)——依赖添加依赖排除与项目整合

一.Maven的坐标 1. 坐标的定义 数学意义上的坐标可以是平面上的(x,y)也可以是空间上的(x,y,z),都可以确定一个质点的位置和方向. Maven中有很多构件,为了能够自动化解析任何一个构件,需要将它们做成唯一标识,即依赖管理的基础——坐标,通过坐标确定jar的位置 2. 为什么需要坐标 在没有坐标之前,当我们需要一些jar包的时候,总需要到各个网站上下载.这样一来,就浪费了很多时间,提高了程序开发成本. 另一方面,下载没有统一规范,导致版本不统一等,又严重提高了运维成本. 拥有了统一

Jetty学习四:部署到Jetty

Web应用的框架 标准Jetty发布版本能部署标准servlet Spec Web应用和Jetty内部ContextHandler部署描述符,或者两者的一个混合. Web应用是可部署的动态(servlets.filters.jsps.等等)和静态内容.支持库.和绑定到特定上下文路径的描写性的元数据的集合. 格式和布局最终都是通过Servlet Spec定义,你可以查阅官方Servlet Spec文档获取关于Web应用布局和结构的更多细节,这里将给出一个基本的轮廓. Web应用能被捆绑到一个单个的

Dubbo项目入门

Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. 它的特性如下 面向接口代理的高性能RPC调用 智能负载均衡 服务自动注册与发现 高度可扩展能力 运行期流量调度 可视化的服务治理与运维 Talk is cheap, Show me the code.现在来着手搭建一个Dubbo项目吧. 搭建一个xml配置的Dubbo项目 创建三个项目 service-api 服务提供者和服务消费者共用的接口 se

学习设计模式 - 六大基本原则之依赖倒置原则

设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principl