先注册好,然后进行调用,注册请看上篇博客

Provider生产者-–不需要调用,service是给别人调用的,把方法的所有给别人调用,增加了dubbo层(其实就是封装的一层),其他业务逻辑都是在service和function里面实现
把自己的类放给别人用,新增一个dubbo层,调用自己的service层,dubbo层给别人用,需要在yml文件里面配置路径

消费者—consumer就是去调用别人,把别人的接口拿过来,这个包的路径就要和别人提供的包的路径一致,然后进行调用。
层级包括(controller层,service层 ,dao层,provider层)
provider层把远程调用的方法(是指common里面的service)注入进来,实现调用(无需任何逻辑),如果业务层需要远程调用,在业务层把provider注入进来,进行方法调用。
生产者:多一个dubbo层,暴露接口
消费者:多一层provider层,进行调用
生产者的common一定和消费者提供的common一致
层级关系永远是controller—service----实现类

先注册好两个大的maven项目,且两个大项目里面都要创建一个相同的子common项目
有两个大maven项目(provider:提供者和consumerone:消费者)

第一:提供者

NACOS和docker的区别 nacos和dubbo_java


如上图,为提供者Provider的文件架构图,子项目providertwo增加了dubbo层,dubbo层的接口对外提供,dubbo层的CompanyRpcServiceImpl实现了子项目common的CompanuRpcService接口

NACOS和docker的区别 nacos和dubbo_spring_02


**在提供者provider项目的子项目providertwo中的application-dev文件里的base-packages的路径是dubbo包的路径

如何快速得到dubbo包的路径:右击dubbo,然后点击copy Reference **

application-dev文件里的base-packages指要暴露出去的接口地址

NACOS和docker的区别 nacos和dubbo_NACOS和docker的区别_03


如上,有一点特重要的是在子项目providertwo的pom文件里面记得加子项目common的依赖

package com.aixiao.msj.common.service.auth;
public interface CompanuRpcService {
    String test();
}

如上代码,是provoider项目下子项目common的接口CompanuRpcService代码。

package com.aixiao.msj.common.service.dubbo;
import com.aixiao.msj.common.service.auth.CompanuRpcService;
import org.apache.dubbo.config.annotation.Service;
@Service
public class CompanyRpcServiceImpl implements CompanuRpcService {
    @Override
    public String test() {
        return "这一天,我开始仰望星空,发现~星星!!!";
    }
}

如上代码,是provoider项目下子项目providertwo的dubbo层的CompanyRpcServiceImpl代码。

第二:消费者

NACOS和docker的区别 nacos和dubbo_ide_04


如上图,为消费者的文件架构图

首先在consumerone消费者项目中,在子项目consumertwo中的application-dev文件里的base-packages的路径是dubbo包的路径,然后在pom文件里面加入common的依赖。

NACOS和docker的区别 nacos和dubbo_ide_05

package com.aixiao.maj.web.server.service.provider;
import com.aixiao.msj.common.service.auth.CompanuRpcService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Component;

@Component
public class CpmpanuRPCProvider {
    @Reference(check = false,timeout = 30000)
    private CompanuRpcService companuRpcService;
    public String TestCom(){
        //不需要业务逻辑,这是简单的调用
        return companuRpcService.test();
    }
}

如上,子项目consumertwo的provider层的CpmpanuRPCProvider的代码,是provider层把远程调用的方法(是指common里面的service层)注入进来,实现调用(无需任何逻辑)。

NACOS和docker的区别 nacos和dubbo_spring_06

package com.aixiao.maj.web.server.service.service;

public interface EcoService {
    String jason();
}

如上,这是EcoService接口的代码

package com.aixiao.maj.web.server.service.service.impl;

        import com.aixiao.maj.web.server.service.provider.CpmpanuRPCProvider;
        import com.aixiao.maj.web.server.service.service.EcoService;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.stereotype.Service;

@Service
public class EcoServceImpl implements EcoService {
    @Autowired
    private CpmpanuRPCProvider cpmpanuRPCProvider;

    public String jason() {
        //写业务的地方
        return cpmpanuRPCProvider.TestCom();
    }
}

如上,这是EcoServiceImpl的代码,这里调用了CpmpanuRPCProvider。
最后,在controller层里面测试

package com.aixiao.maj.web.server.service.controll;

import com.aixiao.maj.web.server.service.service.EcoService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/econtroller")
@Service
public class EcoController {
    @Autowired
    private EcoService ecoService;
    @RequestMapping(value = "/msj/service",method = RequestMethod.GET)
    public String Complain(){
        return ecoService.jason();
    }
}

如上,是controller层EcoController的代码。这里调用了service层的EcoService接口EcoService的实现类EcoServiceImpl调用了provider层的CpmpanuRPCProvider类,CpmpanuRPCProvider类进行了远程调用

然后用postman进行测试就好啦

NACOS和docker的区别 nacos和dubbo_spring_07