博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dubbo的Api+Provider+Customer示例(IDEA+Maven+Springboot+dubbo)
阅读量:6896 次
发布时间:2019-06-27

本文共 9315 字,大约阅读时间需要 31 分钟。

项目结构

dubbo-demo

  dubbo-api:提供api接口,一般存储实体类和接口服务

  dubbo-provider:dubbo生产者提供服务,一般存储接口具体实现

  dubbo-customer:dubbo消费者使用服务,分发请求

一、新建项目dubbo-demo

1、新建Maven项目,File-->new-->Project,选择Maven

2、填充GroupId、ArtifactId和Version 

3、一路Next,最后选择项目名称(之前创建过dubbo的项目,这里重命名为dubbo_demo)

4、生成项目,修改pom.xml(不修改也不影响子模块),删除src

 

 二、添加基于SpringBoot的三个子模块dubbo-api、dubbo-provider、dubbo-customer

1、添加子模块dubbo-api,项目右键-->new-->Module

 

 

 

 

 最后生成的dubbo-api 如下:

 

2、以相同的方式创建dubbo-provider和dubbo-customer如下:

 

 

三、各个模块添加代码示例

1、dubbo-api

 

phone(手机实体类):

package com.mirana.api.model;import java.io.Serializable;import java.math.BigDecimal;/** * Title:手机 实体类 * * @CreatedBy Mirana * @DateTime 2018/5/25 8:43 */public class Phone implements Serializable {    // 主键id    private Long       id;    // 手机名称    private String     name;    // 价格    private BigDecimal price;    public Long getId () {        return id;    }    public void setId (Long id) {        this.id = id;    }    public String getName () {        return name;    }    public void setName (String name) {        this.name = name;    }    public BigDecimal getPrice () {        return price;    }    public void setPrice (BigDecimal price) {        this.price = price;    }}

 IPhoneService手机接口

package com.mirana.api.service;import com.mirana.api.model.Phone;/** * Title:手机服务接口 * * @CreatedBy Mirana * @DateTime 2018/5/25 8:45 */public interface IPhoneService {    /**     * 根据id查找手机     *     * @param id     * @return     */    Phone findById (Long id);}

在application.properties中定义端口

server.port=9011

 

2、dubbo-provider

 

 pom.xml添加dubbo-api(具体实现类要实现dubbo-api的IPhoneService接口)和Apache Dubbo的Maven依赖,红色部分为新增依赖

4.0.0
com.mirana.provider
dubbo-provider
v1.1
jar
dubbo-provider
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.2.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
     
com.mirana.api
dubbo-api
v1.1
     
com.alibaba
dubbo
2.5.3
spring
org.springframework
org.apache.zookeeper
zookeeper
3.4.10
slf4j-log4j12
org.slf4j
com.github.sgroschupf
zkclient
0.1
org.springframework.boot
spring-boot-maven-plugin

 添加实现类PhoneServiceImpl,@service注解是dubbo的注解,而非Spring的注解

package com.mirana.provider.service;import com.alibaba.dubbo.config.annotation.Service;import com.mirana.api.model.Phone;import com.mirana.api.service.IPhoneService;import java.math.BigDecimal;/** * Title:手机服务service * * @CreatedBy Mirana * @DateTime 2018/5/25 10:32 */@Service(version = "1.0.0")public class PhoneServiceImpl implements IPhoneService {    /**     * 根据id查找手机     *     * @param id     * @return     */    @Override    public Phone findById (Long id) {        Phone phone = new Phone();        phone.setId(id);        phone.setName("iphonex");        phone.setPrice(BigDecimal.valueOf(8848.88));        return phone;    }}

新增dubbo服务提供者的配置文件:dubbo-provider.xml

在SpringBoot的启动类DubboProviderApplication上导入dubbo-provider.xml的配置

package com.mirana.provider;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@ImportResource(value = {"classpath:dubbo-provider.xml"})public class DubboProviderApplication {    public static void main (String[] args) {        SpringApplication.run(DubboProviderApplication.class, args);    }}

在application.properties中定义端口

server.port=9012

3、dubbo-customer

1、pom.xml,与provider相似,添加dubbo-api和dubbo的依赖(红色部分)

4.0.0
com.mirana.customer
dubbo-customer
v1.1
jar
dubbo-customer
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.2.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
com.mirana.api
dubbo-api
v1.1
com.alibaba
dubbo
2.5.3
spring
org.springframework
org.apache.zookeeper
zookeeper
3.4.10
slf4j-log4j12
org.slf4j
com.github.sgroschupf
zkclient
0.1
org.springframework.boot
spring-boot-maven-plugin

2、添加视图控制器PhoneController

package com.mirana.customer.controller;import com.mirana.api.model.Phone;import com.mirana.api.service.IPhoneService;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/** * Title:TODO * * @CreatedBy Mirana * @DateTime 2018/5/25 10:59 */@RestController@RequestMapping("/phone")public class PhoneController {    @Resource    private IPhoneService phoneService;    /**     * @return     */    @RequestMapping("/findById")    public Phone findById (Long id) {        return phoneService.findById(id);    }}

3、添加dubbo服务消费者的配置文件dubbo-customer.xml

4、在SpringBoot的启动类DubboCustomerApplication上导入dubbo-customer.xml的配置

package com.mirana.customer;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@ImportResource(value = {"classpath:dubbo-customer.xml"})public class DubboCustomerApplication {    public static void main (String[] args) {        SpringApplication.run(DubboCustomerApplication.class, args);    }}

在application.properties中定义端口

server.port=9013

三、请求服务消费者的地址

  查找id为3的手机:http://localhost:9013/phone/findById?id=3,返回的json数据如图

 

三、运行程序,查看dubbo-admin

1、先运行dubbo-api

  运行DubboApiApplication的main( )方法

2、再运行dubbo-provider

  运行DubboProviderApplication的main( )方法

3、最后运行dubbo-customer

  运行DubboCustomerApplication的main( )方法

4、查看dubbo-admin的服务

  http://localhost:8080/dubbo/,输入用户名root密码root

4.1提供的服务

 4.2 服务提供者

 

 4.3 服务消费者

 

 

转载于:https://www.cnblogs.com/wrcold520/p/9087537.html

你可能感兴趣的文章
快速排序
查看>>
浅析Java虚拟机结构与机制[转]
查看>>
具体解释Android中AsyncTask的使用
查看>>
谷歌“信息安全公主”:我是一名好黑客
查看>>
Web Service学习笔记
查看>>
windows无法搜索新更新 80072ee2
查看>>
win7 32/64bit VS2010 OpenCV 2.4.9 环境配置
查看>>
tomcat配置虚拟主机
查看>>
【百度地图API】百度API卫星图使用方法和卫星图对比工具
查看>>
XCode中使用SVN 教程
查看>>
Guice--Java依赖注入框架
查看>>
第二、UIScrollView的使用大全
查看>>
Ehcache(03)——Ehcache中储存缓存的方式
查看>>
基于海康监控的图像识别设计
查看>>
Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密
查看>>
CCNA2.0笔记_HSRP
查看>>
wamp You don't have permission to access / on this server等问题的解决.
查看>>
【POJ】3071 Football
查看>>
ArcGis 统计方法
查看>>
Resource interpreted as Script but transferred with MIME type text/plain
查看>>