dubbo配置方式

Properties配置方式

        DUBBO 在读取配置的时候会先读取 XML文件中的配置,如果没找到就会默认去读取resources目录下的 dubbo.properties 文件。而 dubbo.properties 的配置方式与 XML配置方式一样,只不过是换了种写法而已。要换成 dubbo.properties 配置,你只需把 spring-provider.xml 里关于 application、registry、protocol 里的配置注释掉,然后加上对应的 dubbo.properties 文件即可。上面例子的 spring-provider.xml 换成 properties 文件的写法是这样的:

[html]  view plain  copy
 print ?
  1. # 应用名  
  2. dubbo.application.name=dubbodemo-provider  
  3. # 注册中心地址  
  4. dubbo.registry.address=zookeeper://localhost:2181  
  5. # 调用协议地址  
  6. dubbo.protocol.name=dubbo  
  7. dubbo.protocol.port=28080  
spring-consumer.xml 换成 properties 文件写法是这样的:

[html]  view plain  copy
 print ?
  1. # 应用名  
  2. dubbo.application.name = dubbodemo-consumer  
  3. # 注册中心地址  
  4. dubbo.registry.address = zookeeper://localhost:2181  
  5. # 调用协议地址  
  6. dubbo.protocol.name = dubbo  
  7. dubbo.protocol.port = 28080  
此时 spring-provider.xml 和 spring-consumer.xml 文件内容如下:

[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!-- 添加 DUBBO SCHEMA -->  
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.         http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo  
  8.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
  9.    
  10.     <!-- 声明需要暴露的服务接口 -->  
  11.     <dubbo:service timeout="3000" interface="com.chanshuyi.service.IUserService" ref="userService"/>   
  12. </beans>  
[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!-- 添加 DUBBO SCHEMA -->  
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.         http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo  
  8.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
  9.   
  10.     <!-- 调用哪些服务 -->  
  11.     <dubbo:reference id="userService" interface="com.chanshuyi.service.IUserService"/>  
  12. </beans>  
       注意,如果你即配置了 XML 又配置了 properties 的内容,那么 DUBBO 读取时将直接读取 XML 中的配置,忽略 properties 里的配置。
       一般情况下 properties 都是用来配置一些公共的信息,比如可能一个应用需要调用多个注册中心的服务,这时候它们的 application.name、dubbo.protocol.name等都是相同的,那么你可以用 properties 来配置这些公共信息。其他情况,还是建议用 XML 配置方式。
annotation配置方式

annotation 配置方式其实是在 XML 配置方式上,将暴露服务和调用服务与 Spring 深度结合起来。

Provider方配置:

将<dubbo:service>  节点换成 <dubbo:annotation> 节点:

<dubbo:annotation package="com.lwz.service.impl" />

其中 package 表示要扫描的包。之后在实现类里加上注解 @Service(version ="1.0.0") :

[java]  view plain  copy
 print ?
  1. package com.lwz.service.impl;  
  2.   
  3. import com.lwz.service.IUserService;  
  4. import org.slf4j.Logger;  
  5. import org.slf4j.LoggerFactory;  
  6. import com.alibaba.dubbo.config.annotation.Service;  
  7.   
  8. @Service(version = "1.0.0")  
  9. public class UserServiceImpl implements IUserService {  
  10.   
  11.     @Override  
  12.     public boolean login(String username, String password) {  
  13.         ……  
  14.     }  
  15. }  
注意,dubbo更新版本以后,这个版本信息version已经可以没有了, @Service 注解是 alibaba.dubbo 中的 Service 注解。

Consumer方配置:

将<dubbo:reference>  节点换成 <dubbo:annotation> 节点:

<!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->

< dubbo:annotation package ="com.chanshuyi" />    

[java]  view plain  copy
 print ?
  1. @Component  
  2. public class UserServiceConsumer {  
  3.   
  4.     private static Logger logger = LoggerFactory.getLogger(UserServiceConsumer.class);  
  5.   
  6.     @Reference(version="1.0.0")  
  7.     static IUserService userService;  
  8.   
  9.     public static void main(String args[]) {  
  10.         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");   
  11.         logger.info("执行结果:" + userService.login("hello""hello"));  
  12.     }  
  13. }  

之后启动 provider服务,运行 UserServiceConsumer.main() 方法测试即可获得结果。


还有一种Dubbo API的使用方式,这里就不在累述了,也是十分简单

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值