Loading

第一个Dubbo程序

1.新建api接口

/**
 * API接口,provider和consumer都要去引入这个接口
 */
public interface DemoDubboService {
    public String demo(String param);
}

2.新建provider

  • pom依赖

    <parent>
    	<groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.7.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.3.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.2.0</version>
        </dependency>
    </dependencies>   
    
  • application.yml

    dubbo:
      application:
        name: dubbo-provider
      registry:
        address: zookeeper://127.0.0.1:2181
    
  • 实现接口

    import com.msb.dubbo.service.DemoDubboService;
    import org.apache.dubbo.config.annotation.Service;
    
    /**
     * 此类为接口的实现类,
     * Service注解为apache的@Service.此注解是区分项目是Provider还是Consumer最重要依据
     */
    @Service
    public class DemoDubboServiceImpl implements DemoDubboService {
        public String demo(String param) {
            System.out.println("执行demo");
            return param + "123";
        }
    }
    
  • 启动类

    import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * 必须要有@EnableDubbo注解,否则Dubbo不生效。
     */
    @SpringBootApplication
    @EnableDubbo
    public class ProviderApplication {
        public static void main(String[] args) {
            SpringApplication.run(ProviderApplication.class, args);
        }
    }
    

3.新建consumer

  • pom依赖

    <parent>
    	<groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.7.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.2.0</version>
        </dependency>
    </dependencies>   
    
  • application.yml

    dubbo:
      application:
        name: dubbo-cunsumer
      registry:
        address: zookeeper://127.0.0.1:2181
    
  • Service类

    import com.msb.dubbo.service.DemoDubboService;
    import org.apache.dubbo.config.annotation.Reference;
    import org.springframework.stereotype.Service;
    
    /**
     * 调用服务使用@Reference注解org.apache.dubbo.config.annotation.Reference;
     */
    @Service
    public class DemoService{
    
        @Reference
        private DemoDubboService demoDubboService;
    
        public String demo() {
            return demoDubboService.demo("张三丰");
        }
    }
    
  • Controller类

    import com.msb.service.DemoService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class DemoController {
    
        @Autowired
        private DemoService demoService;
    
        @RequestMapping("/demo")
        @ResponseBody
        public String demo() {
            return demoService.demo();
        }
    }
    
  • 启动类

    import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    @EnableDubbo
    public class ConsumerApplication {
        public static void main(String[] args) {
            SpringApplication.run(ConsumerApplication.class, args);
        }
    }
    
posted @ 2022-02-27 18:15  ZT丶  阅读(30)  评论(0编辑  收藏  举报