Dubbo的@Reference和@Service说明
Posted 冬眠的山谷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo的@Reference和@Service说明相关的知识,希望对你有一定的参考价值。
前言
@Reference 用在消费端,表明使用的是服务端的什么服务
1 @RestController 2 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 {
@Override
public String sayHello(String name) {
log.info("访问sayHello " + name);
return "Hello " + name;
}
}
@Reference
声明
可以看出该注解可以用在属性或者方法上
@Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD, ElementType.METHOD}) public @interface Reference { Class<?> interfaceClass() default void.class; String interfaceName() default ""; String version() default ""; String group() default ""; String url() default ""; String client() default ""; boolean generic() default false; boolean injvm() default false; boolean check() default true; boolean init() default false; boolean lazy() default false; boolean stubevent() default false; String reconnect() default ""; boolean sticky() default false; String proxy() default ""; String stub() default ""; String cluster() default ""; int connections() default 0; int callbacks() default 0; String onconnect() default ""; String ondisconnect() default ""; String owner() default ""; String layer() default ""; int retries() default 0; String loadbalance() default ""; boolean async() default false; int actives() default 0; boolean sent() default false; String mock() default ""; String validation() default ""; int timeout() default 0; String cache() default ""; String[] filter() default {}; String[] listener() default {}; String[] parameters() default {}; String application() default ""; String module() default ""; String consumer() default ""; String monitor() default ""; String[] registry() default {}; }
Class<?> interfaceClass() default void.class
注解所在的接口类,可以不写,比如上面的为
interfaceClass = RemoteUserService.class
String interfaceName() default ""
上述也可以通过接口全类名来实现,可以不写
interfaceName ="com.dubbo.frame.common.service.RemoteUserService"
String version() default ""
版本号,提供端的@Reference 和消费端的@Service 上的版本号必须一致。
String group() default ""
分组,提供端的@Reference 和消费端的@Service 上的group必须一致。
消费端的group也可以写成 group=“*”,表示适配所有。
String url() default "";
String client() default "";
boolean generic() default false;
boolean injvm() default false;
boolean check() default true;
true:启动时检查是否有可用的服务,如果没有则启动失败
false:启动时不检查,使用时才检查,也就是懒加载
应当设置为true。
boolean init() default false;
boolean lazy() default false;
boolean stubevent() default false;
String reconnect() default "";
boolean sticky() default false;
String proxy() default "";
String stub() default "";
String cluster() default "";
int connections() default 0;
int callbacks() default 0;
String onconnect() default "";
String ondisconnect() default "";
String owner() default "";
String layer() default "";
int retries() default 0;
String loadbalance() default "";
boolean async() default false;
int actives() default 0;
boolean sent() default false;
String mock() default "";
String validation() default "";
int timeout() default 0;
String cache() default "";
String[] filter() default {};
String[] listener() default {};
String[] parameters() default {};
String application() default "";
String module() default "";
String consumer() default "";
String monitor() default "";
String[] registry() default {};
以上是关于Dubbo的@Reference和@Service说明的主要内容,如果未能解决你的问题,请参考以下文章
dubbo 生成 ApplicationConfig 等bean @service@Reference实现原理解析