Dubbo基于注解方式的配置

提供者(也就是服务端)的配置,先上配置文件代码:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  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   
  8.         http://www.springframework.org/schema/context   
  9.         http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  10.         http://code.alibabatech.com/schema/dubbo   
  11.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd   
  12.         ">   
  13.       
  14.     <!-- 提供方应用信息,用于计算依赖关系 -->  
  15.     <dubbo:application name="dubbo_provider" />  
  16.   
  17.     <!-- 使用multicast广播注册中心暴露服务地址 <dubbo:registry address="multicast://224.5.6.7:1234"   
  18.         /> -->  
  19.   
  20.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
  21.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />  
  22.   
  23.     <!-- 用dubbo协议在20880端口暴露服务 -->  
  24.     <dubbo:protocol name="dubbo" port="20880" />  
  25.   
  26.     <!-- 具体的实现bean  
  27.     <bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />  
  28.     -->  
  29.     <!-- 声明需要暴露的服务接口   
  30.     <dubbo:service interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />  
  31.     -->  
  32.       
  33.     <!-- 使用注解方式暴露接口 -->     
  34.     <dubbo:annotation package="com.dubbo.provide" />  
  35.       
  36.     <!-- 加入spring注解扫描 -->  
  37.     <context:component-scan base-package="com.dubbo."/>  
  38. </beans>   
下面这两句就是开启注解扫描的配置:

[html]  view plain  copy
  1. <!-- 使用注解方式暴露接口 -->     
  2.     <dubbo:annotation package="com.dubbo.provide" />  
  3.       
  4.     <!-- 加入spring注解扫描 -->  
  5.     <context:component-scan base-package="com.dubbo."/>  

package和base-package是要扫描的位置,这些配置的意思大部分都跟spring的配置差不多,这里就不多说了。

接下来来看下我们Service中代码注解的使用:

[html]  view plain  copy
  1. package com.dubbo.provide.user.service.impl;  
  2.   
  3. import org.springframework.stereotype.Component;  
  4.   
  5. import com.alibaba.dubbo.config.annotation.Service;  
  6. import com.dubbo.provide.user.service.IUserService;  
  7.   
  8.   
  9. /**  
  10.  *   
  11.  * @author LiZhiXian  
  12.  * @version 1.0  
  13.  * @date 2015-9-12 下午4:44:21  
  14.  */  
  15. @Component  
  16. @Service  
  17. public class UserService implements IUserService {  
  18.   
  19.     @Override  
  20.     public String getUser() {  
  21.         return "dubbo接口调用成功......";  
  22.     }  
  23.   
  24. }  
其中@Component就是spring bean的注解,而@Service就是dubbo本身的注解,这两个注解合起来的意思就跟我们配置文件中先声明一个bean然后再声明接口暴露的意思是一样的。

接下来看下消费者(也就是客户端)的配置:

我这边使用的是springmvc框架,注意:这边接口的名称以及包路径,必须和提供者暴露的接口一致,可以直接将服务端的接口导出成jar,然后在客户端引入使用。




平时加配置文件的习惯都是按不同的功能来配置的,但是刚试了一下将dubbo单独配置,发现在注解扫描的时候扫描不到,有可能是跟spring的注解扫描发生了冲突,

最后我将dubbo的配置集成到了springMvc-servlet.xml配置中问题就解决了。

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <beans     
  3.     xmlns="http://www.springframework.org/schema/beans"     
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  5.     xmlns:p="http://www.springframework.org/schema/p"     
  6.     xmlns:context="http://www.springframework.org/schema/context"  
  7.     xmlns:util="http://www.springframework.org/schema/util"  
  8.     xmlns:mvc="http://www.springframework.org/schema/mvc"   
  9.     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  10.     xsi:schemaLocation="http://www.springframework.org/schema/beans     
  11.     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
  12.     http://www.springframework.org/schema/context  
  13.     http://www.springframework.org/schema/context/spring-context-3.2.xsd  
  14.     http://www.springframework.org/schema/util   
  15.     http://www.springframework.org/schema/util/spring-util-3.1.xsd  
  16.     http://www.springframework.org/schema/mvc  
  17.     http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd  
  18.     http://code.alibabatech.com/schema/dubbo   
  19.     http://code.alibabatech.com/schema/dubbo/dubbo.xsd">    
  20.        
  21.     <!-- <util:properties id="APP_PROPERTIES" location="classpath:sys.properties" local-override="true"/> -->  
  22.       
  23.     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
  24.     <dubbo:application name="basic_dubbo_consumer" />  
  25.   
  26.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
  27.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />  
  28.       
  29.     <!-- 启用spring mvc 注解-->  
  30.     <context:annotation-config/>  
  31.       
  32.     <!-- MVC转换 -->   
  33.     <mvc:annotation-driven/>  
  34.     <mvc:default-servlet-handler/>  
  35.       
  36.     <dubbo:annotation package="com.frame." />  
  37.       
  38.     <!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->    
  39.     <context:component-scan base-package="com.frame." />   
  40.       
  41.     <!-- ②:启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->    
  42.     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>  
  43.   
  44.     <!-- 转换成json对象配置 -->  
  45.     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"    
  46.         p:ignoreDefaultModelOnRedirect="true" >    
  47.             <property name="messageConverters">    
  48.                 <list>    
  49.                     <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>   
  50.                 </list>    
  51.             </property>    
  52.     </bean>   
  53.       
  54.     <!--  ③:对模型视图名称的解析,即在模型视图名称添加前后缀 -->    
  55.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >    
  56.          <property name="prefix" value="/WEB-INF/pages/"></property>    
  57.          <property name="suffix" value=".jsp"></property>    
  58.     </bean>   
  59.     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">     
  60.          <!-- 该属性用来配置可上传文件的最大 byte 数 1G -->     
  61.          <property name="maxUploadSize"><value>10737418240</value></property>   
  62.     </bean>   
  63.   
  64. </beans>    

dubbo的配置我是加在了springMvc配置的最前面


接下来看下我在controller中的运用

[java]  view plain  copy
  1. package com.frame.controller;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4. import org.springframework.web.bind.annotation.RequestMapping;  
  5. import org.springframework.web.bind.annotation.ResponseBody;  
  6. import com.alibaba.dubbo.config.annotation.Reference;  
  7. import com.dubbo.provide.user.service.IUserService;  
  8.   
  9. /** 
  10.  *  
  11.  * @author LiZhiXian 
  12.  * @version 1.0 
  13.  * @date 2015-9-16 上午8:54:55 
  14.  */  
  15. @Controller  
  16. @RequestMapping(value="/user/*")  
  17. public class UserController {  
  18.   
  19.     @Reference  
  20.     IUserService userService;//调用Dubbo暴露的接口  
  21.   
  22.     @RequestMapping(value="getUser.htm")  
  23.     public @ResponseBody String getUser(){  
  24.         return userService.getUser();  
  25.     }  
  26. }  

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值