springboot整合dubbo过程记录

记录一下springboot整合dubbo过程

SpringBoot 2.0.3

Dubbo Spring Boot 0.2.0 

zookeeper 3.3.6

maven 3.3.9

一、创建项目工程

       GroupIdArtifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
  GroupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。

      ArtifactId 也是当前工程的名字,定义maven项目在组中唯一的ID

比如我创建一个项目,我一般会将GroupId设置为cn.zt,cn表示域为中国,zt是我个人姓名缩写,ArtifactId设置为testpro,表示你这个项目的名称是testpro,依照这个设置,在你创建Maven工程后,新建包的时候,包结构最好是cn.zt.testpro打头的,如果有个UserDao,它的全路径就是cn.zt.testpro.dao.UserDao

(1)父工程pom文件

<!--parent是springboot最最核心的依赖,所有的配置都在里面,并且是springboot项目必须引入的--> 

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath/>
</parent>

三、创建服务提供者工程

(1)再分别创建服务提供的api、impl、model

(2)这里需要注意几点

         1、Impl引入dubbo依赖

                引入dubbo依赖

           <dependency>
               <groupId>com.alibaba.boot</groupId>
               <artifactId>dubbo-spring-boot-starter</artifactId>
               <version>0.2.0</version>
           </dependency>

并且实现类的@Service应该是com.alibaba.dubbo.config.annotation.Service

        2、model实体类需要实现Serializable序列化接口

(3)提供者Implapplication.properties配置

使用多环境配置方式

#项目启动端口号
server.port=8101
# Dubbo 服务消费者配置
dubbo.application.name=testpro_provider
# Dubbo 扫描包的路径
dubbo.scan.basePackages=cn.zt.testpro.impl
# Dubbo 注册id
dubbo.registry.id=testpro_provider
# Dubbo 服务端口号
dubbo.protocol.port=20881
# Dubbo 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

(4)创建服务提供者的启动类

引入依赖(非web项目)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

使用@SpringBootApplication注解即可,然后开启zookeeper,启动服务提供的启动类

服务提供者启动成功,还可以下载dubbo-admin的war包,查看服务的注册情况

 

四、创建服务消费者工程

(1)创建工程、启动类、引入依赖

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
          <version>2.0.3.RELEASE</version>
     </dependency>

这个依赖是web项目需要引入的,同样启动类使用@SpringBootApplication注解即可

(2)配置application.properties

dubbo配置

 

#服务名称
spring.application.name=consumer
#服务启动端口号
server.port=8100
## Dubbo 服务名称  ==> java.lang.reflect.InvocationTargetException: null 没有这项配置会报错,无法注册到zookeeper
dubbo.application.name=consumer
## Dubbo 服务端口号
dubbo.protocol.port=20888
## Dubbo 服务注册地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
## Dubbo 服务扫描包路径
dubbo.scan.base-packages=cn.zt.consumer
## Dubbo 服务是否注册到注册中心
dubbo.registry.register=true

(3)创建controller类

 

@Controller和@RestController和@ResponseBody
@Controller
@Controller注解标注类的方法,return时会被视图处理器识别成静态文件的路径。默认为templates文件夹下。如return "test/hello"表示的是默认路径下的test文件夹中的名叫hello的文件,带上后缀名.html或btl等也可以识别。

@RestController
@RestController是@Controller和@ResponseBody的结合体,只能注解类,return返回的值将被转换成json,字符串除外,直接写入HTTP相应体返回到页面中。

需要注意的是,只在类上注解@ResponseBody类中方法映射的URL并不能起作用,加上@Controller注解后才可以接受处理HTTP请求,同时加上 @RestController是@Controller和只写@ResponseBody是一样的效果

@RequestMapping
它可以注解类也可以注解方法,注解类时标注请求的路径,标注方法时表示将特定的URL映射到指定的方法。

@RequestBody
@RequestBody 注解一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据,在GET请求中没有请求体所以一般不适用,在post请求中必须指定Content-Type后才能使用它,如ajax请求指定发送格式为application/json。

@ResponseBody
@ResponseBody可以标注方法也可以标注类,当标注方法时表示该方法的返回值会被解析成json(字符串会不会被转换),直接写入HTTP Response Body中,视图处理器将不会将return的参数识别成路径。当它标注类时,类中所有方法的返回值都将直接返回值到页面,相当于给所有的类都加上@ResponseBody注解。

(4)注入provider接口

注意这里需要使用@Reference,是这个包下的com.alibaba.dubbo.config.annotation.Reference;

需要引入dubbo依赖

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

五、测试

这些都做好了以后,我们可以启动服务提供者和消费者,使用postman来测试一下

好吧,写得不是很好,希望大家多提意见,多指定交流,以后再更新其他的,谢谢

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值