前言

@Reference 用在消费端,表明使用的是服务端的什么服务

 1 @RestController2 public class RemoteUserController {3 4 5 6     @Reference(version = "1.0.0",check = true)7     private RemoteUserService remoteUserService;8 9
10
11     @RequestMapping(value="/dubbo/say/{name}")
12     public String sayHello(@PathVariable("name") String name){
13         //调用服务提供者的服务
14         String result=remoteUserService.sayHello(name);
15         return result;
16     }
17 }

@Service 用在服务提供者中,在类或者接口中声明。
服务提供者实现相关的服务接口,当消费端调用相关的类时,最终会调用提供者的实现方法。

@Component
@Service(version = "1.0.0",timeout = 10000,interfaceClass = RemoteUserService.class)
public class RemoteUserServiceImpl implements RemoteUserService {@Overridepublic String sayHello(String name) {log.info("访问sayHello " + name);return "Hello " + name;}
}

@Reference

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
public @interface Reference {/*** Interface class, default value is void.class*/Class<?> interfaceClass() default void.class;/*** Interface class name, default value is empty string*/String interfaceName() default "";/*** Service version, default value is empty string*/String version() default "";/*** Service group, default value is empty string*/String group() default "";/*** Service target URL for direct invocation, if this is specified, then registry center takes no effect.* 不使用注册中心,消费者和提供者直连,url="dubbo://localhost:20890" */String url() default "";/*** Client transport type, default value is "netty"*/String client() default "";/*** Whether to enable generic invocation, default value is false*/boolean generic() default false;/*** When enable, prefer to call local service in the same JVM if it's present, default value is true*/boolean injvm() default true;/*** Check if service provider is available during boot up, default value is true*/boolean check() default true;/*** Whether eager initialize the reference bean when all properties are set, default value is false*/boolean init() default false;/*** Whether to make connection when the client is created, the default value is false*/boolean lazy() default false;/*** Export an stub service for event dispatch, default value is false.** @see Constants#STUB_EVENT_METHODS_KEY*/boolean stubevent() default false;/*** Whether to reconnect if connection is lost, if not specify, reconnect is enabled by default, and the interval* for retry connecting is 2000 ms** @see Constants#DEFAULT_RECONNECT_PERIOD*/String reconnect() default "";/*** Whether to stick to the same node in the cluster, the default value is false** @see Constants#DEFAULT_CLUSTER_STICKY*/boolean sticky() default false;/*** How the proxy is generated, legal values include: jdk, javassist*/String proxy() default "";/*** Service stub name, use interface name + Local if not set*/String stub() default "";/*** Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking*/String cluster() default "";/*** Maximum connections service provider can accept, default value is 0 - connection is shared*/int connections() default 0;/*** The callback instance limit peer connection** @see Constants#DEFAULT_CALLBACK_INSTANCES*/int callbacks() default 0;/*** Callback method name when connected, default value is empty string*/String onconnect() default "";/*** Callback method name when disconnected, default value is empty string*/String ondisconnect() default "";/*** Service owner, default value is empty string*/String owner() default "";/*** Service layer, default value is empty string*/String layer() default "";/*** Service invocation retry times** @see Constants#DEFAULT_RETRIES*/int retries() default 2;/*** Load balance strategy, legal values include: random, roundrobin, leastactive** @see Constants#DEFAULT_LOADBALANCE*/String loadbalance() default "";/*** Whether to enable async invocation, default value is false*/boolean async() default false;/*** Maximum active requests allowed, default value is 0*/int actives() default 0;/*** Whether the async request has already been sent, the default value is false*/boolean sent() default false;/*** Service mock name, use interface name + Mock if not set*/String mock() default "";/*** Whether to use JSR303 validation, legal values are: true, false*/String validation() default "";/*** Timeout value for service invocation, default value is 0*/int timeout() default 0;/*** Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache*/String cache() default "";/*** Filters for service invocation** @see Filter*/String[] filter() default {};/*** Listeners for service exporting and unexporting** @see ExporterListener*/String[] listener() default {};/*** Customized parameter key-value pair, for example: {key1, value1, key2, value2}*/String[] parameters() default {};/*** Application spring bean name*/String application() default "";/*** Module spring bean name*/String module() default "";/*** Consumer spring bean name*/String consumer() default "";/*** Monitor spring bean name*/String monitor() default "";/*** Registry spring bean name*/String[] registry() default {};/*** Protocol spring bean names*/String protocol() default "";/*** methods support* @return*/Method[] methods() default {};
}

@Service

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Inherited
public @interface Service {/*** Interface class, default value is void.class*/Class<?> interfaceClass() default void.class;/*** Interface class name, default value is empty string*/String interfaceName() default "";/*** Service version, default value is empty string*/String version() default "";/*** Service group, default value is empty string*/String group() default "";/*** Service path, default value is empty string*/String path() default "";/*** Whether to export service, default value is true*/boolean export() default true;/*** Service token, default value is false*/String token() default "";/*** Whether the service is deprecated, default value is false*/boolean deprecated() default false;/*** Whether the service is dynamic, default value is false*/boolean dynamic() default false;/*** Access log for the service, default value is ""*/String accesslog() default "";/*** Maximum concurrent executes for the service, default value is 0 - no limits*/int executes() default 0;/*** Whether to register the service to register center, default value is true*/boolean register() default true;/*** Service weight value, default value is 0*/int weight() default 0;/*** Service doc, default value is ""*/String document() default "";/*** Delay time for service registration, default value is 0*/int delay() default 0;/*** @see Service#stub()* @deprecated*/String local() default "";/*** Service stub name, use interface name + Local if not set*/String stub() default "";/*** Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking*/String cluster() default "";/*** How the proxy is generated, legal values include: jdk, javassist*/String proxy() default "";/*** Maximum connections service provider can accept, default value is 0 - connection is shared*/int connections() default 0;/*** The callback instance limit peer connection** @see Constants#DEFAULT_CALLBACK_INSTANCES*/int callbacks() default Constants.DEFAULT_CALLBACK_INSTANCES;/*** Callback method name when connected, default value is empty string*/String onconnect() default "";/*** Callback method name when disconnected, default value is empty string*/String ondisconnect() default "";/*** Service owner, default value is empty string*/String owner() default "";/*** Service layer, default value is empty string*/String layer() default "";/*** Service invocation retry times** @see Constants#DEFAULT_RETRIES*/int retries() default Constants.DEFAULT_RETRIES;/*** Load balance strategy, legal values include: random, roundrobin, leastactive** @see Constants#DEFAULT_LOADBALANCE*/String loadbalance() default Constants.DEFAULT_LOADBALANCE;/*** Whether to enable async invocation, default value is false*/boolean async() default false;/*** Maximum active requests allowed, default value is 0*/int actives() default 0;/*** Whether the async request has already been sent, the default value is false*/boolean sent() default false;/*** Service mock name, use interface name + Mock if not set*/String mock() default "";/*** Whether to use JSR303 validation, legal values are: true, false*/String validation() default "";/*** Timeout value for service invocation, default value is 0*/int timeout() default 0;/*** Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache*/String cache() default "";/*** Filters for service invocation** @see Filter*/String[] filter() default {};/*** Listeners for service exporting and unexporting** @see ExporterListener*/String[] listener() default {};/*** Customized parameter key-value pair, for example: {key1, value1, key2, value2}*/String[] parameters() default {};/*** Application spring bean name*/String application() default "";/*** Module spring bean name*/String module() default "";/*** Provider spring bean name*/String provider() default "";/*** Protocol spring bean names*/String[] protocol() default {};/*** Monitor spring bean name*/String monitor() default "";/*** Registry spring bean name*/String[] registry() default {};/*** Service tag name*/String tag() default "";/*** methods support* @return*/Method[] methods() default {};
}

Dubbo的@Reference和@Service说明相关推荐

  1. spring-boot框架dubbo在controlle中r注解@Reference注入service,但是调用方法时候,service报null空指针异常

    spring-boot框架dubbo在controlle中r注解@Reference注入service,但是调用方法时候,service报null空指针异常 参考文章: (1)spring-boot框 ...

  2. Dubbo之@Reference 和 ReferenceBean

    consumer调用dubbo服务 两种方法: 1.构建一个ReferenceBean,然后使用Spring的@Autowired引用服务 @Bean public ReferenceBean< ...

  3. dubbo的@Reference注解作用分析

    目的 看看dubbo是怎么给加了@Reference注解的属性注入invoker实例,为什么有时候加了@Reference注解的属性会是null. ReferenceAnnotationBeanPos ...

  4. Dubbo学习记录(八) -- Spring整合Dubbo中@Reference注解解析原理

    Spring整合Dubbo中@Reference注解解析原理 @Reference: 可以用在属性或者方法, 意味着需要引用某个Dubbo服务, 那么Dubbo整合Spring后, 我很好奇怎么把这个 ...

  5. Dubbo的Reference注解必须先启动provider的问题

    目录 现象 看源码分析原因 注解Reference第一步:用Reference注解里的参数初始化ReferenceConfig 注解Reference第二步:从配置文件里获取参数,写入Referenc ...

  6. 10月15日云栖精选夜读 | 阿里巴巴 Apache Dubbo 布道师谈 Service Mesh

    "Service Mesh要解决分布式架构下如何集成的问题,同时它又是云原生的核心,Dubbo Mesh正在做这方面的实践.--- 阿里巴巴Apache Dubbo布道师 吕仁琦 " ...

  7. Dubbo系列之Provider Service注册和暴露(三)

    本章从源码角度分析dubbo是如何进行服务的注册和服务的暴露,这个在dubbo整个机制中是非常重要也是比较复杂的,接下来就一步步来分析:其实dubbo使用起来还是比较简单的,比如看一个官方的demo, ...

  8. VS2008中Web Reference和Service Reference的区别

    很早就发现在vs2008中应用web service有两种方式,即Add Web Reference和Add Service Reference,但是一直不是很清楚这两者有什么区别.趁着今天有空实验一 ...

  9. 【转】Web Reference和Service Reference的区别

    今天因为项目需要使用服务引用,就按之前的经验添加上了,步骤如下: 项目根目录--引用--右键--添加服务引用--高级--添加Web引用--输入接口的URL地址--回车(下方出现的就是接口的定义的方法) ...

最新文章

  1. python开发好学吗-Python的前景和Python好不好学呢?
  2. Ehab and a 2-operation task
  3. ftp改为sftp_浅谈 FTP、FTPS 与 SFTP
  4. 二、UI线程和界面卡死
  5. 验证javascript错误使用Google Analytics(分析、统计)
  6. Oracle Ravello的学习资料
  7. 怎么进入机顶盒linux系统,如何在机顶盒中刷入原生的Debian系统
  8. 深度解析TCP/IP---网络原理的重重之重
  9. CentOS7目录配置
  10. # 搜狗输入法~快捷键总结
  11. python中使用缩进来体现代码之间的逻辑关系_Python使用缩进来体现代码之间的逻辑关系....
  12. spring boot整合prometheus
  13. “大灯”到底指近光灯还是远光灯?
  14. 基于时间序列特征提取的车载网络系统入侵检测技术
  15. R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、使用ggcoxzph函数可视化进行Schoenfeld残差图检验模型是否满足等比例风险
  16. 编解码学习笔记(四) Mpeg系列——Mpeg 4
  17. 2018年2月Ivanti英万齐(前LANDESK蓝代斯克)关闭中国研发中心
  18. 利用python对Excel进行读写操作
  19. 一些不错的caffe初学者的教程链接
  20. 深圳仙湖弘法寺佛家感言

热门文章

  1. NLP进阶,使用TextRNN和TextRNN_ATT实现文本分类
  2. 电视机体感游戏大盘点
  3. 【android】:android错误之Unparsed appt errors
  4. 联想650服务器做系统,联想RD650阵列 安装系统步骤
  5. 【文本三剑客之一sed】
  6. 面经汇总--校招--北京顺丰同城
  7. Duolingo推出聊天学习机器人 让你免费学英语
  8. let 连续复制_【进阶4-4期】Lodash是如何实现深拷贝的
  9. 笔记本电池只能充电到95%-99%之间无法充至100%的原因和处理方案
  10. i春秋python_i春秋CTF web题(1)