spring-boot整合dubbo

为何要写这个小工具

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

怎么使用

  1. 对于服务的消费者或提供者,使用dubbo内置的注解@Service或@Reference来声明
  2. 在application.properties/yml 中配置dubbo的相关参数,例以下面就是一个简单的消费者的配置
dubbo:
    application:
        name: lizo-consumer
    registry:
        address: zookeeper://localhost:12181
  1. 在配置类上使用@EnableDubbo(basePackages = "xxx.xxx.xxx") 来开启dubbo的自动配置

通过以上3个步骤,就能够完成对dubbo的配置,是否是很Spring-bootstylespring

dubbo-filter

dubbo有不少扩展,其中filter是使用比较多一个。可是用起来很不方便。若是能像Spring boot定义Spring MVC的filter那样简单声明一个bean就行了。恩,其实就是这样。app

@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,那么能够这样ide

@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;
        }
    }

若是感兴趣

最后说明

  • dubbo底层代码是没进行开发过的,只是在其基础上进行的封装。
  • 不支持多注册源
  • 有bug或者有代码优化建议欢迎反馈
相关文章
相关标签/搜索