Dubbo(0)-概述-三种配置方式-XML-注解-API

1.Dubbo 概述
 2. 3种配置方法
   2.1基于XML配置
   2.2基于注解的配置
   2.3基于API的配置



1.Dubbo 概述

  Dubbo 是还蛮火的RPC框架,消费者服务者模式。与rest可以跨语言调用不同,Dubbo只限于两者都是JAVA调用。下图为基本框架图。

  

  2.  三种配置方法
       
dubbo项目除了一堆依赖外pom.xml还是要添加下DemoService 这个公共接口的。

<dependency> 
    <groupId>org.apache.dubbo</groupId> 
    <artifactId>dubbo-demo-interface</artifactId> 
    <version>${project.parent.version}</version> 
</dependency> 

    2.1基于XML配置
      2.1.1provider.xml
           
我提供什么服务呢?会把这个服务 DemoServiceImpl 配置成一个 Spring Bean,并作为 DemoService 服务暴露出去。

<!-- 配置为 Spring Bean --> 
<bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/> 
<!-- 作为 Dubbo 服务暴露出去 --> 
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/> 


      2.1.2 指定服务中心 如果用的是zookeeper就写成下面这样

<!-- Zookeeper 地址 --> 
<dubbo:registry address="zookeeper://127.0.0.1:2181"/> 


      2.1.3 消费者调用
 

//Application 中写个 main() 方法,指定 Spring 配置文件并启动ClassPathXmlApplicationContext 即可。
  ClassPathXmlApplicationContext ctx =new ClassPathXmlApplicationContext("beans.xml");
        demoService service=(demoService) ctx.getBean("demoService");


   2.2基于注解的配置
     
就是把xml全换成注解即可,网上找了段代码示意一下。

 

public class Application { 
    public static void main(String[] args) throws Exception { 
	    // 使用AnnotationConfigApplicationContext初始化Spring容器, 
        // 从ProviderConfiguration这个类的注解上拿相关配置信息 
        AnnotationConfigApplicationContext context =  
              new AnnotationConfigApplicationContext( 
                  ProviderConfiguration.class); 
        context.start(); 
        System.in.read(); 
    } 
    @Configuration // 配置类 
    // @EnableDubbo注解指定包下的Bean都会被扫描,并做Dubbo服务暴露出去 
    @EnableDubbo(scanBasePackages = "org.apache.dubbo.demo.provider")      
    // @PropertySource注解指定了其他配置信息 
    @PropertySource("classpath:/spring/dubbo-provider.properties")      
    static class ProviderConfiguration { 
        @Bean 
        public RegistryConfig registryConfig() { 
            RegistryConfig registryConfig = new RegistryConfig(); 
            registryConfig.setAddress("zookeeper://127.0.0.1:2181"); 
            return registryConfig; 
        } 
    } 
} 



   2.3基于API的配置
     2.3.1provider------ServiceConfig类的编写
            

/ 创建一个ServiceConfig的实例,泛型参数是业务接口实现类, 
// 即DemoServiceImpl 
ServiceConfig<DemoServiceImpl> service = new ServiceConfig<>(); 
// 指定业务接口 
service.setInterface(DemoService.class); 
// 指定业务接口的实现,由该对象来处理Consumer的请求 
service.setRef(new DemoServiceImpl()); 
// 获取DubboBootstrap实例,这是个单例的对象 
DubboBootstrap bootstrap = DubboBootstrap.getInstance(); 
//生成一个 ApplicationConfig 的实例、指定ZK地址以及ServiceConfig实例 
bootstrap.application(new ApplicationConfig("dubbo-demo-api-provider")) 
        .registry(new RegistryConfig("zookeeper://127.0.0.1:2181")) 
        .service(service) 
        .start() 
        .await(); 


     2.3.2consumer ------
     

// 创建ReferenceConfig,其中指定了引用的接口DemoService 
 ReferenceConfig<DemoService> reference = new ReferenceConfig<>(); 
 reference.setInterface(DemoService.class); 
 reference.setGeneric("true"); 
  
 // 创建DubboBootstrap,指定ApplicationConfig以及RegistryConfig 
 DubboBootstrap bootstrap = DubboBootstrap.getInstance(); 
 bootstrap.application(new ApplicationConfig("dubbo-demo-api-consumer")) 
         .registry(new RegistryConfig("zookeeper://127.0.0.1:2181")) 
         .reference(reference) 
         .start(); 
 // 获取DemoService实例并调用其方法 
 DemoService demoService = ReferenceConfigCache.getCache() 
    .get(reference); 
 String message = demoService.sayHello("dubbo"); 
 System.out.println(message); 
总结

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值