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 ""

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 {};

猜你喜欢

转载自www.cnblogs.com/lgjlife/p/10225271.html
今日推荐