前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring|springboot集成dubbo

spring|springboot集成dubbo

作者头像
微笑的小小刀
发布2019-08-06 11:50:24
1.4K0
发布2019-08-06 11:50:24
举报
文章被收录于专栏:java技术大本营java技术大本营

项目背景

现在国内中小公司,远程调用基本上用的都是dubbo ,当然小刀的公司也不例外,我们以前用的是dubbo 2.4.x的版本,虽然也能使用,但是本着新项目新技术的追求,我们更新成了dubbo 2.7.x 的版本

springboot集成dubbo的应用

以往的集成方式

引入dubbo , zk的jar包

代码语言:javascript
复制
@ImportResource({"classpath*:dubbo/*.xml"})
public class Start extends SpringBootServletInitializer

dubbo.properties内容如下:

代码语言:javascript
复制
dubbo.container=logback,spring
dubbo.application.name=dubbo-service
dubbo.registry.address=zookeeper://zookeeper.xxx.com:2181
dubbo.log4j.file=logs/dubbo-service.log
dubbo.log4j.level=WARN
dubbo.protocol.port=20782
dubbo.protocol.dispatcher=message
dubbo.protocol.threadpool=fixed
dubbo.protocol.threads=200

还有dubbo.provider.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:service timeout="30000" interface="com.xxx.xxx.xxxxService" ref="xxxxService"/>
 
</beans>

这时候去dubbo-admin上应该可以看到应用注册上去了

新的集成方式

借着上一波用gradle搭的多模块的架子,今天我们来往里面添加dubbo 官方文档: https://github.com/apache/dubbo-spring-boot-project 先引入相关的依赖,这里就要注意了,依赖放在service层,因为是service层才需要提供dubbo服务出去. 当然为了省事的话,也可以放到business-impl里面,因为我们通过会调用别的项目的dubbo接口,但是严格来说,基础服务类的应用,只从自己的数据库取数据,然后通过dubbo接口返回给业务应用.所以在基础应用中,只能把依赖引在service层,业务应用可以直接引在business-impl层

服务提供层

代码语言:javascript
复制
  implementation 'org.springframework.boot:spring-boot-starter'

  testImplementation 'org.springframework.boot:spring-boot-starter-test'
  compile group: 'org.apache.dubbo', name: 'dubbo-spring-boot-starter', version: '2.7.1'
  compile (group: 'org.apache.dubbo', name: 'dubbo-dependencies-zookeeper', version: '2.7.2')
      {
        exclude group:'org.slf4j'
      }
  compile ('org.apache.dubbo:dubbo:2.7.2'){
    exclude group: 'org.springframework'
    exclude group: 'javax.servlet'
    exclude group: 'log4j'
  }

application.properties中进行配置:

代码语言:javascript
复制
dubbo.application.name=forest-service
dubbo.registry.address=zookeeper://zookeeper.xxx.com:30038
dubbo.protocol.name=dubbo
dubbo.protocol.port=21899
dubbo.config-center.address=zookeeper://zookeeper.xxx.com:30038
dubbo.metadata-report.address=zookeeper://zookeeper.xxx.com:30038
dubbo.scan.base-packages=com.platform.market.service.impl

此时代码目录结构为:

其中,在实现类上,需要添加以下两个注解:

代码语言:javascript
复制
@Service
@Component
public class ItemServiceImpl implements ItemService 

注意是dubbo包里面的service注解

然后我们在dubbo-admin中可以看到我们启动的服务

服务消费层

这边就很简单了,一句话搞定,把以前我们写的@Autowire 换成dubbo包内的 @Reference 就可以了 配置文件中只需要引注册地址就可以了,

代码语言:javascript
复制
dubbo.application.name=xxxx-xxxx
dubbo.registry.address=zookeeper://zookeeper.xxx.com:30038

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java技术大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目背景
  • springboot集成dubbo的应用
    • 以往的集成方式
      • 新的集成方式
        • 服务消费层
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档