基于注解实现dubbo简例

服务端

1.基于注解标记服务

//使用servcie注解后,由dubbo将这个实现类提升为spring容器管理的bean,并且负责配置初始化和服务暴露
@Service
public class EchoServiceImpl implements EchoService{
    
    
  
  public String echo(String msg){
    
    
    return msg;
  }

}

2.注解方式生成du bbo配置信息

public class AnnotationProvider{
    
    
  
  public static void mian(String args[]) throws Exception{
    
    
    AnnotationConfigApplicationContext context = 
      new AnnotationConfigApplicationContext(ProviderConfiguration.class);
    context.start();
    System.in.read();

  }

  @Configuration
 @EnableDubbo(scanBasePackages="com.alibaba.dubbo.samples.echo")
 static class ProviderConfiguration{
    
    
   @Bean
   public ProviderConfig providerConfig(){
    
    
     return new ProviderCongig();
   }

   @Bean
   public ApplicationConfig applicationConfig(){
    
    
     ApplicationConfig applicationConfig = 
       new ApplicationConfig();
     applicationConfig.setName("echo-annotation-provider");
     return applicationConfig;
   }
   
   @Bean
   public RegistryConfig registryConfig(){
    
    
     RegistryConfig registryConfig = new RegistryConfig();
     registryConfig.setProtocol("zookeeper");
     registryConfig.setAddress("localhost");
     registryConfig.setPort(2181);
     return registryConfig;
   }

   @Bean
   public ProtocolConfig protocolConfig(){
    
    
     ProtocalConfig config = new ProtocolConfig();
     config.setName("dubbo");
     config.setPort(20880);
     return config;
   }
 }
  

}

客户端

1.消费

@Component
public class EchoConsumer{
    
    
  
  @Reference
  private EchoService echoService;

  public String echo(String name){
    
    
    return echoService.echo(name);
  }

}

2.配置类

public class AnnotationConsumer{
    
    
  
  public static void main() throws Exception{
    
    
    AnnotationConfigApplicationContext context = 
      new AnnotationConfigApplicationContext();

   context.start();
   EchoComsumer echoService = context.getBean(EchoComsumer.class);
   System.out.println("result:"+echoService.echo("hello world!"));
  }


  @Configuration
 @EnableDubbo(scanBasePackages="com.alibaba.dubbo.samples.echo")
  @ComponentScan(value={
    
    "com.alibaba.dubbo.samples.echo"})
  static class ConsumerConfiguration(){
    
    
    
    @Bean
    public ApplicationConfig applicationConfig(){
    
    
      ApplicationConfig config = new ApplicationConfig();
      config.setName("echo-annotation-consumer");
      return config;
    }
    
    @Bean
    public ConsumerConfig consumerConfig(){
    
    
      return new ConsumerConfig();
    }

    @Bean
    public RegistryConfig registryConfig(){
    
    
      RegistryConfig registryConfig = new RegistryConfig();
      registryConfig.setProtocol("zookeeper");
      registryConfig.setAddress("localhost");
      registryConfig.serPort("2181");
      return registryConfig;
    }
  }
}

猜你喜欢

转载自blog.csdn.net/weixin_37632716/article/details/121443571