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源码—service reference

dubbo 生成 ApplicationConfig 等bean @service@Reference实现原理解析

【dubbo源码】13. 服务消费方之@Reference依赖注入原理

dubbo配置文件解读

dubbo服务消费方注入@Reference失败

Dubbo与Spring的融合机制