本文概述1.什么是DubboActivate注解2.使用DubboActivate3.总结继续上一篇文章:《Springboot 整合 Dubbo/ZooKeeper 》,在Spring中使用DubboActivate扩展点启动。这是一群朋友问的。我总结一下,分享给更多的人。运行环境:JDK7或8,Maven3.0+技术栈:SpringBoot1.5+,Dubbo2.5+,ZooKeeper3.3+1.什么是Dubbo激活注解@Activate是Duboo框架提供的注解。Dubbo官方文档中记载:对于集合类扩展点,如:Filter、InvokerListener、ExportListener、TelnetHandler、StatusChecker等,可以同时加载多个实现。这时候可以使用自动激活来简化配置。使用@Activate实现一些Filter,如下:1.无条件自动激活可以直接使用默认注解importcom.alibaba.dubbo.common.extension.Activate;importcom.alibaba.dubbo.rpc.Filter;@Activate//无条件激活publicclassXxxFilterimplementsFilter{//...}2.配置xxx参数,当参数为有效值时激活,如配置cache="lru",自动激活CacheFilterimportcom.alibaba.dubbo.common.extension.Activate;importcom.alibaba.dubbo.rpc.Filter;@Activate("xxx")//配置xxx参数且参数为有效值时激活,例如配置cache="lru",则自动激活CacheFilter。publicclassXxxFilterimplementsFilter{//...}3.只为provider激活,group可以是provider或consumerimportcom.alibaba.dubbo.common.extension.Activate;importcom.alibaba.dubbo.rpc.Filter;@Activate(group="provider",value="xxx")//只为提供者激活,组可以是“提供者”或“消费者”publicclassXxxFilterimplementsFilter{//...}二、在前面的springboot-dubbo-server和springboot-dubbo-client项目的基础上,使用Dubbo激活注解,github地址:https://github.com/JeffLi1993/springboot-learning-example。这里我们在消费端添加一个Filter,即springboot-dubbo-client项目。代码如下:importcom.alibaba.dubbo.rpc.RpcException;publicclassXxxFilterimplementsFilter{publicResultinvoke(Invoker>invoker,Invocationinvocation)throwsRpcException{//beforefilter...Resultresult=invoker.invoke(invocation);//afterfilter...returnresult;}}开始客户端项目发现,Console报错,并且出现了:Causedby:java.lang.IllegalStateException:NosuchextensiondubboConsumerFilterforfilter/com.alibaba.dubbo.rpc.Filter发现初始化Filter时报错。证明配置没有成功。原来按照官方文档中的描述,我们需要配置扩展点配置文件。Maven项目目录结构:src|-main|-java|-com|-xxx|-XxxFilter.java(实现Filter接口)|-resources|-META-INF|-dubbo|-com.alibaba.dubbo.rpc。Filter(纯文本文件,内容:xxx=com.xxx.XxxFilter)配置在:xxx=com.xxx.XxxFilter3.总结调用拦截扩展的应用场景很多,比如黑白名单,比如IP等【本文为专栏作家“李强强”原创稿件,转载请联系作者获得授权】点此查看该作者更多好文
