@reference注解_Dubbo配置参考⼿册之dubbo:reference 概述
这是服务消费者引⽤服务的配置标签。对应的配置类为 org.fig.ReferenceConfig。dubbo:reference标签⼀共有27个属性(截⾄2.7.7版本)。
属性详情
id
服务引⽤bean的id,即当前dubbo:reference标签代表的服务的bean的id,其为string类型,必填属性(后续的属性说明中,没有专门指明是必填属性的,均为可选属性)。
interface
服务接⼝名,类型是class即接⼝完整类名,属于dubbo:reference标签的必填属性,其作⽤是⽤于服务发现。
version
服务版本,与服务提供者的版本⼀致。对应URL参数为version,类型为string。
group
服务分组,对应URL参数为group,类型为string。当⼀个接⼝有多个实现,可以⽤分组区分,必须和服务提供⽅⼀致。
timeout
服务⽅法调⽤超时时间,单位毫秒。long类型,对应URL的参数为timeout,缺省使⽤的timeout,是性能调优属性之⼀。
retries
远程服务调⽤重试次数,不包括第⼀次调⽤,不需要重试请设为0,缺省使⽤的retries。int类型的性能调优类属性,对应URL参数retries。
connections
对每个提供者的最⼤连接数,rmi、http、hessian等短连接协议表⽰限制连接数,dubbo等长连接协表⽰建⽴的长连接个数。int类型的性能调优类属性,URL对应的参数为connections,缺省使⽤的connections。
loadbalance
负载均衡策略,对应URL中的loadbalance参数,string类型,其取值范围为random,roundrobin,leastactive,分别表⽰随机,轮询,最少活跃调⽤。loadbalance是性能调优中⾮常重要的属性之⼀,缺省使⽤的loadbalance。
async
是否异步执⾏,不可靠异步,只是忽略返回值,不阻塞执⾏线程。boolean类型的性能调优类属性,URL中对应参数为async,缺省使⽤的async。
generic
是否缺省泛化接⼝,如果为泛化接⼝,将返回GenericService。属于服务治理类的属性,类型为boolean,其对应的URL参数为generic,缺省使⽤的generic。
check
启动时检查提供者是否存在,boolean类型。设置为true时,如果提供者即服务不存在注册中⼼,将报错,设置为false时,不做检查。这是⼀个很有⽤的服务治理类的属性,在出现服务循环引⽤时,可以设置为false解决。其对应的URL参数为check。缺省使⽤的check。
url
点对点直连服务提供者地址,将绕过注册中⼼。string类型,URL中对应的参数为url。
stub
服务接⼝客户端本地代理类名,⽤于在客户端执⾏本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传⼊远程代理对象,构造函数如:public XxxServiceLocal(XxxService xxxService)。其类型为class/boolean,URL中对应的参数为stub。
mock
服务接⼝调⽤失败Mock实现类名,该Mock类必须有⼀个⽆参构造函数,与stub的区别在于,Local总是被执⾏,⽽mock只在出现⾮业务异常(⽐如超时,⽹络异常等)时执⾏,stub在远程调⽤之前执⾏,Mock在远程调⽤后执⾏。mock是⽐较重要的服务治理的属性,其类型为class或boolean,缺省值为false。对应URL的参数是mock。
cache
以调⽤参数为key,缓存返回结果,其类型为string/boolean,取值范围lru, threadlocal, jcache等。在URL中对应的参数为cache。
validation
是否启⽤JSR303标准注解验证,如果启⽤,将对⽅法参数上的注解进⾏校验。boolean类型,在URL中对应的参数为validation。
proxy
选择动态代理实现策略,string类型的性能调优类属性,可选取值为jdk和javassist,缺省值为javassist。其在URL的参数为proxy。
client
客户端传输类型设置,如Dubbo协议的netty或mina。string类型的性能调优类属性,其在URL的参数为client。
registry
string类型,从指定注册中⼼注册获取服务列表,在多个注册中⼼时使⽤,值为的id属性,多个注册中⼼ID⽤逗号分隔。缺省将从所有注册中⼼获服务列表后合并结果。
owner
调⽤服务负责⼈,⽤于服务治理,请填写负责⼈前缀。string类型的属性,对应URL参数为owner。
actives
每服务消费者每服务每⽅法最⼤并发调⽤数。int类型,缺省值为0,对应URL参数为actives,属于性能调优类属性。
cluster
集⽅式,string类型的性能调优类属性,可选取值为failover、failfast、failsafe、failback、forking,缺省值为failover。
filter
服务过滤器链,服务消费⽅远程调⽤过程名称,多个名称⽤逗号分隔。string类型性能调优属性,缺省值为default。其对应的URL 参数为reference.filter。
listener
服务消费⽅引⽤服务名称,多个名称⽤逗号分隔。string类型的性能调优类属性,其对应的URL参数为invoker.listener,缺省值为default。
layer
服务调⽤者所在的分层。如:biz、dao、intl:web、china:acton。string类型的服务治理类属性,其在URL上对应的参数为layer。
init
是否在afterPropertiesSet()时饥饿初始化引⽤,否则等到有⼈注⼊或引⽤该实例时再初始化。boolean类型的性能调优类属性,缺省值为false,其在URL上对应的参数为init。
protocol
string类型,只调⽤指定协议的服务提供⽅,其它协议忽略。其在URL上对应的参数为protocol。
reference group
总结
细⼼的⼩伙伴可能已经发现,其实有不少属性和dubbo:service中的属性很类似,其含义也基本相同。确实如此,只不过dubbo:service⽤于服务提供者端,⽽dubbo:reference⽤于服务消费者端。
#java开发⼯程师# #架构师# #诗和远⽅#
学习⼯作之余,⼀起看看诗和远⽅:顺德伦教进⼠牌坊