详解SpringMVC注解方式集成Dubbo

心已赠人 2024-04-07 11:16 185阅读 0赞

由于最近项目需要SpringMVC集成Dubbo,本文大概记录下详细集成过程:

一、首先项目中Maven引入Jar包

  1. <!-- dubbo相关 -->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>dubbo</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.zookeeper</groupId>
  8. <artifactId>zookeeper</artifactId>
  9. <version>${zookeeper.version}</version>
  10. </dependency>

二、web.xml配置context-param(生产者)

  1. <context-param>
  2. <param-name>contextConfigLocation</param-name>
  3. <param-value>
  4. classpath*:config/datasource.xml
  5. classpath*:spring/*.xml
  6. </param-value>
  7. </context-param>

三、 配置spring-dubbo-provider.xml配置文件

  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:dubbo="http://code.alibabatech.com/schema/dubbo"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://code.alibabatech.com/schema/dubbo
  8. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  9. <!-- 提供方应用信息,用于计算依赖关系 -->
  10. <dubbo:application name="demo-provider"/>
  11. <!-- 使用ZK注册中心暴露服务地址 -->
  12. <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
  13. <!-- 用Dubbo协议在20880端口暴露服务 -->
  14. <dubbo:protocol name="dubbo" port="20880"/>
  15. <!-- 扫描注解包路径,多个包用逗号分隔 -->
  16. <dubbo:annotation package="com.ls"/>
  17. </beans>

四、 class注册成生产者

  1. @Transactional
  2. @Service
  3. public class UserServiceImpl implements IUserService {
  4. }

五、web.xml配置servlet(消费者)

  1. <servlet>
  2. <servlet-name>dispatcherServlet</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <init-param>
  5. <param-name>contextConfigLocation</param-name>
  6. <param-value>classpath:spring/spring-mvc-dubbo.xml</param-value>
  7. </init-param>
  8. <load-on-startup>1</load-on-startup>
  9. </servlet>

六、配置spring-mvc-dubbo.xml配置文件

  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. xmlns:mvc="http://www.springframework.org/schema/mvc"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context.xsd
  11. http://code.alibabatech.com/schema/dubbo
  12. http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  13. http://www.springframework.org/schema/mvc
  14. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  15. <!-- 提供方应用信息,用于计算依赖关系 -->
  16. <dubbo:application name="consumer"/>
  17. <!-- 使用ZK注册中心暴露服务地址 -->
  18. <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
  19. <!-- 扫描注解包路径,多个包用逗号分隔 -->
  20. <dubbo:annotation package="com.ls"/>
  21. <!-- <dubbo:consumer check="false" timeout="3000" group ="*"/>-->
  22. <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
  23. <constructor-arg value="UTF-8"/>
  24. <property name="supportedMediaTypes">
  25. <list>
  26. <value>text/html;charset=utf-8</value>
  27. <value>application/xml;charset=utf-8</value>
  28. <value>application/json;charset=utf-8</value>
  29. </list>
  30. </property>
  31. </bean>
  32. <bean id="mappingJackson2HttpMessageConverter"
  33. class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
  34. <property name="prefixJson" value="false"/>
  35. <property name="supportedMediaTypes">
  36. <list>
  37. <value>text/html;charset=utf-8</value>
  38. <value>application/xml;charset=utf-8</value>
  39. <value>application/json;charset=utf-8</value>
  40. </list>
  41. </property>
  42. <property name="objectMapper" ref="objectMapper"></property>
  43. </bean>
  44. <bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
  45. <property name="dateFormat">
  46. <bean class="java.text.SimpleDateFormat">
  47. <constructor-arg value="yyyy-MM-dd HH:mm:ss" />
  48. </bean>
  49. </property>
  50. </bean>
  51. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  52. <property name="maxUploadSize" value="50000000"/>
  53. <property name="maxUploadSizePerFile" value="5000000"/>
  54. <property name="defaultEncoding" value="utf-8"/>
  55. </bean>
  56. <mvc:annotation-driven >
  57. <mvc:message-converters>
  58. <ref bean="stringHttpMessageConverter"/>
  59. <ref bean="mappingJackson2HttpMessageConverter"/>
  60. </mvc:message-converters>
  61. </mvc:annotation-driven>
  62. </beans>

七、 class中引入消费者

  1. @Reference
  2. private IUserService userService;

至此SpringMVC集成Dubbo注解配置方式以基本完成。

发表评论

表情:
评论列表 (有 0 条评论,185人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Dubbo配置方式详解

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,00