欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring-boot整合dubbo:Spring-boot-dubbo-starter

程序员文章站 2024-02-23 14:23:40
为什么要写这个小工具 如果你用过spring-boot来提供dubbo服务,相信使用中有很多“不爽”的地方。既然使用spring boot,那么能用注解的地方绝不用xml...

为什么要写这个小工具

如果你用过spring-boot来提供dubbo服务,相信使用中有很多“不爽”的地方。既然使用spring boot,那么能用注解的地方绝不用xml配置,这才是spring-boot-style。开个玩笑,真正意思是,spring-boot适合一些简单的、独立的服务,一个大的系统是不适合使用spring-boot来开发。相反,spring-boot适合那些简单服务的搭建。 网上大多数的方法还是使用xml配置,通过@import注解来引入xml配置。

怎么使用

对于服务的消费者或提供者,使用dubbo内置的注解@service或@reference来声明

在application.properties/yml 中配置dubbo的相关参数,例如下面就是一个简单的消费者的配置

dubbo:
 application:
  name: lizo-consumer
 registry:
  address: zookeeper://localhost:12181

在配置类上使用@enabledubbo(basepackages = "xxx.xxx.xxx") 来开启dubbo的自动配置

经过以上3个步骤,就可以完成对dubbo的配置,是不是很spring-bootstyle

dubbo-filter

dubbo有很多扩展,其中filter是使用比较多一个。但是用起来很不方便。如果能像spring boot定义spring mvc的filter那样简单声明一个bean就好了。恩,其实就是这样。

 @bean
 providerfilter providerfilter() {
  return new providerfilter();
 }
 static class providerfilter extends abstractdubboproviderfiltersupport {
  public result invoke(invoker<?> invoker, invocation invocation) {
   system.out.println("providerfilter");
   return invoker.invoke(invocation);
  }
 }

更定制化的需求,可以使用dubbo的@activate注解来定制化filter,那么可以这样

 @bean
 customfilter customfilter() {
  return new customfilter();
 }
 @activate(group = constants.provider)
 static class customfilter extends abstractdubbofiltersupport {
  public result invoke(invoker<?> invoker, invocation invocation) throws rpcexception {
   system.out.println("providerfilter2");
   return invoker.invoke(invocation);
  }
  public filter getdefaultextension() {
   return this;
  }
 }

以上所述是小编给大家介绍的spring-boot整合dubbo:spring-boot-dubbo-starter,希望对大家有所帮助