• Dubbo初次使用(广播形式)


    Dubbo初次使用

    分布式项目把所有的模块都拆分成了独立的项目,分为业务层、服务层。
    而业务层和服务层没有在一个项目中,无法直接连接,而其他的项目可以项目依赖,直接导入依赖即可,这就出现了一个问题,业务层访问service层时,因为没有相互依赖,找不到对应的类,这是我们就需要使用Dubbo作为中间件。

    自己理解:

    首先在服务层配置dubbo,把service实现类和interface绑定一起,放入dubbo设置好的广播中,而web访问时,也需要配置dubbo,通过interface,获取广播中的实现类对象,并取一个id名,这个id要和web层引入的service的接口名保持一致,就可以获取到了

    使用步骤

    1.导入依赖

    
          com.alibaba
          dubbo
          ${dubbo-version}
          
          
            
              org.springframework
              spring
            
          
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    dubbo默认依赖spring,会与我们导入的spring依赖产生冲突,所以需要排除掉。

    2.配置服务层接口

    package com.ceh.back.service;
    
    public interface TestService {
        /**
         * 测试dubbo
         * @return
         */
        String getNow();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在搭建项目结构时,需要把接口单独的提出来,形成单独的项目,dubbo官网中提出希望这样做,因为不管是web层还是服务层,都需要通过这个接口来绑定。

    3.声明服务(service实现类)

    @Service
    public class TestServiceImpl implements TestService {
    
        @Autowired
        private TestDao testDao;
    
    
        @Override
        public String getNow() {
            Date date = testDao.getNow();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String now = sdf.format(date);
            return now;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4.配置服务到dubbo

     
        
        
        
        
        
        
        
        
        
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    最后一行配置,就是把服务层实现类和接口绑定一起,放入dubbo中,注册,这样dubbo就存在了这个服务。

    5.配置web层

    @RestController
    public class TestController {
    
    
        @Autowired
        private TestService testService;
    
        @RequestMapping("/getNow")
        public String getNow(){
            String now = testService.getNow();
            return now;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在使用@Autowired注解的时候,因为service和web分开了,导致这个地方注入不进去,就需要使用dubbo。

    springmvc.xml文件配置

    
        
        
        
        
        
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    做种通过最后一行配置,把dubbo中存在的服务,赋值给id,此时id要和web层引入service接口名保持一致,这是web就接收到了服务层对象。

    遇到的问题:

    在applicationContext-service.xml和springmvc.xml文件配置dubbo时,因为没有头文件,会报错,idea可以直接生成对应的头文件,但是如果只声明了xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”
    就会出现“找不到dubbo:application的声明”的错误,从新删掉上面的头文件,再从新生成,看看是否最后会出现这样http://code.alibabatech.com/schema/dubbo
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd,的声明文件,声明出来报错解决。(不知道为什么idea第一次不会自动的生成下面的地址)

    采用直联的形式(一般用于测试、开发环境)

    只需要在上边广播的形式上,修改配置文件即可

    applicationContext-service.xml

    
        
        
        
        
        
        
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    springmvc.xml

    
        
        
        
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    C++四舍五入保留整数
    招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本
    C# Onnx Yolov8 Detect 印章 指纹捺印 检测
    阿里云服务器 手动搭建WordPress(CentOS 8)
    vue - Vue脚手架
    【Zabbix】自动发现jvm
    Spring入门程序(二)
    再获深交所认可,Smartbi实力领跑金融BI赛道
    C进阶—动态内存管理
    在学习DNS的过程中给我的启发
  • 原文地址:https://blog.csdn.net/m0_67391401/article/details/126654830