zoukankan      html  css  js  c++  java
  • spring-boot整合dubbo:Spring-boot-dubbo-starter

    为什么要写这个小工具

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

    怎么使用

    1. 对于服务的消费者或提供者,使用dubbo内置的注解@Service或@Reference来声明
    2. 在application.properties/yml 中配置dubbo的相关参数,例如下面就是一个简单的消费者的配置
      dubbo:
       application:
           name: lizo-consumer
       registry:
           address: zookeeper://localhost:12181
    3. 在配置类上使用@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;
            }
        }

    如果感兴趣

    源码及其demo地址:

    最后说明

    • dubbo底层代码是没进行开发过的,只是在其基础上进行的封装。
    • 不支持多注册源
    • 有bug或者有代码优化建议欢迎反馈
  • 相关阅读:
    ubuntu 12.04 安装 redis
    php 获取中文字符拼音首字母
    js 调整排序
    python 练习
    Configuring Locales
    missing locales
    clean code meaningful names
    ubuntu 12.04 支持中文----完胜版
    why add to http response.responseText
    不通过扩展名,去判断文件类型
  • 原文地址:https://www.cnblogs.com/lizo/p/6853474.html
Copyright © 2011-2022 走看看