spring boot配置dubbo(XML)

谁借莪1个温暖的怀抱¢ 2023-10-17 13:43 59阅读 0赞
  上一篇写的是spring boot在自己的properties配置文件中简单配置dubbo的步骤,那种配置有很多的功能(比如超时时间、是否检查)等等,配置起来也挺麻烦的,而我们也习惯传统的那种XML形式的dubbo配置。
这一篇写的是spring boot与传统的dubbo xml文件的结合。
一、dubbo发布方配置
1、首先引入依赖,但是这些依赖就不是上一篇的那个spring boot dubbo的依赖,而是dubbo自己的那几个依赖,引错了,会发布不成功的,我是配置的如下:
  1. <!-- 如果dubbo的配置来自于单独的xml文件,不是来自于spring boot的application配置文件
  2. 那么,导入dubbo相关包,必须单独导入,不能用spring boot和dubbo的jar包-->
  3. <dependency>
  4. <groupId>org.apache.zookeeper</groupId>
  5. <artifactId>zookeeper</artifactId>
  6. <version>3.4.8</version>
  7. <exclusions>
  8. <!--如果你用的logback日志,该包会引起jar包冲突-->
  9. <exclusion>
  10. <groupId>org.slf4j</groupId>
  11. <artifactId>slf4j-log4j12</artifactId>
  12. </exclusion>
  13. </exclusions>
  14. </dependency>
  15. <dependency>
  16. <groupId>com.101tec</groupId>
  17. <artifactId>zkclient</artifactId>
  18. <version>0.3</version>
  19. </dependency>
  20. <dependency>
  21. <groupId>com.alibaba</groupId>
  22. <artifactId>dubbo</artifactId>
  23. <version>2.5.3</version>
  24. <exclusions>
  25. <exclusion>
  26. <groupId>org.springframework</groupId>
  27. <artifactId>spring</artifactId>
  28. </exclusion>
  29. </exclusions>
  30. </dependency>
2.然后在src/main/resources下,添加一个dubbo provider的配置文件dubbo-provider.xml (名字随便起),内容如下:
  1. <!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 -->
  2. <dubbo:application name="dubbo-provider-qssj"/>
  3. <!-- 使用zookeeper注册中心暴露服务地址 -->
  4. <dubbo:registry protocol="zookeeper" address="192.168.1.160:2181" />
  5. <dubbo:protocol name="dubbo" port="31001" />
  6. <dubbo:service interface="test.spring.dubboService.TestDubboService" ref="testDubboService" timeout="1800000" version="1.0.0.1"/>
  7. <bean id="testDubboService" class="test.spring.dubboService.impl.TestDubboServiceImpl"/>
  以上内容与传统的dubbo xml配置文件没什么区别,可以从网上搜到。
3.然后也是需要在发布接口的实现类上加@Service 注解,但是这个注解就变成了org.springframework.stereotype.Service 。具体如下。
  1. package test.spring.dubboService.impl;
  2. import org.springframework.stereotype.Service;
  3. import test.spring.dubboService.TestDubboService;
  4. @Service
  5. public class TestDubboServiceImpl implements TestDubboService {
  6. @Override
  7. public String getName(String name) {
  8. // TODO Auto-generated method stub
  9. return "姓名:"+name;
  10. }
  11. }
4.最后启动类引入以下该dubbo-provider.xml 文件,如下:
  1. package test.spring;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.annotation.ImportResource;
  5. @SpringBootApplication //spring boot启动必须引入的注解
  6. @ImportResource({
  7. "classpath:dubbo-provider.xml"})
  8. public class SpringBootTest {
  9. public static void main(String[] args) {
  10. SpringApplication.run(SpringBootTest.class, args);
  11. }
  12. }
5.最后运行启动类,就会在dubbo上看到该发布的接口。

这里写图片描述

6.发布方的最终项目结构如下:

这里写图片描述
  结构与上一篇那种springboot 的properties配置dubbo没什么区别。

二、调用方项目配置
1、依然是先引入依赖,与上边发布方的依赖是一样的。
2、然后在src/main/resources下添加一个dubbo-consumer.xml 配置文件,内容如下:
  1. <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
  2. <dubbo:application name="dubbo-consumer-qssj" />
  3. <dubbo:consumer timeout="1800000" retries="0" />
  4. <dubbo:registry protocol="zookeeper" address="192.168.1.160:2181" />
  5. <dubbo:reference id="testDubboService" interface="test.spring.dubboService.TestDubboService" check="false" version="1.0.0.1"/>
3.然后复制一份test.spring.dubboService.TestDubboService 接口放到消费者这边,如下:

这里写图片描述

  多说一句,用这种方式配置,controller的位置不需要比调用的dubbo接口位置低。
4.调用的地方加入@Autowired 注解,如下:
  1. package test.spring.dubboService.controller;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import test.spring.dubboService.TestDubboService;
  7. @RestController
  8. public class TestController {
  9. @Autowired
  10. TestDubboService testDubboService;
  11. @RequestMapping(value="abc/akf",method=RequestMethod.GET)
  12. public String abc(String name){
  13. return testDubboService.getName(name);
  14. }
  15. }
5.在启动类引入dubbo-consumer.xml ,具体如下:
  1. package test.spring;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.annotation.ImportResource;
  5. @SpringBootApplication //spring boot启动必须引入的注解
  6. @ImportResource({
  7. "classpath:dubbo-consumer.xml"})
  8. public class SpringBootTest {
  9. public static void main(String[] args) {
  10. SpringApplication.run(SpringBootTest.class, args);
  11. }
  12. }
6.运行启动类,访问controller,则看到调用成功。

这里写图片描述

下一篇说下spring boot配置dubbo注意的问题。

发表评论

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

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

相关阅读

    相关 spring boot 配置

    什么Spring Boot?         Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架