zoukankan      html  css  js  c++  java
  • springboot集成dubbo

    springboot集成dubbo

     

    springdubbo父工程

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>

       <groupId>com.dtg</groupId>
       <artifactId>springdubbo</artifactId>
       <version>1.0-SNAPSHOT</version>
       <parent>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-parent</artifactId>
           <version>2.0.0.RELEASE</version>
       </parent>
       <modules>
           <module>springdubbo-api</module>
           <module>springdubbo-provider</module>
           <module>springdubbo-consumer</module>
       </modules>
       <packaging>pom</packaging>
    </project>

     

    API工程springdubbo-api

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <parent>
           <artifactId>springdubbo</artifactId>
           <groupId>com.dtg</groupId>
           <version>1.0-SNAPSHOT</version>
       </parent>
       <modelVersion>4.0.0</modelVersion>
       <artifactId>springdubbo-api</artifactId>
    </project>

    定义接口

    ITestFacadeService.java

    package com.dtg.springdubbo.service;

    public interface ITestFacadeService {
      public String testMethod(String input);
    }

     

    服务提供者 springdubbo-provider

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
          <groupId>com.dtg</groupId>
          <artifactId>springdubbo</artifactId>
          <version>1.0-SNAPSHOT</version>
      </parent>
      <groupId>com.dtg</groupId>
      <artifactId>springdubbo-provider</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <name>springdubbo-provider</name>
      <description>Demo project for Spring Boot</description>

      <properties>
          <java.version>1.8</java.version>
      </properties>

      <dependencies>
          <!-- springboot -->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-test</artifactId>
              <scope>test</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter</artifactId>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>

          <!-- dubbo -->
          <dependency>
              <groupId>com.alibaba</groupId>
              <artifactId>dubbo</artifactId>
              <version>2.5.3</version>
              <exclusions>
                  <exclusion>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring</artifactId>
                  </exclusion>
              </exclusions>
          </dependency>

          <!-- zookeeper -->
          <dependency>
              <groupId>org.apache.zookeeper</groupId>
              <artifactId>zookeeper</artifactId>
              <version>3.4.6</version>
              <exclusions>
                  <exclusion>
                      <groupId>org.slf4j</groupId>
                      <artifactId>slf4j-log4j12</artifactId>
                  </exclusion>
                  <exclusion>
                      <groupId>log4j</groupId>
                      <artifactId>log4j</artifactId>
                  </exclusion>
              </exclusions>
          </dependency>
          <dependency>
              <groupId>com.github.sgroschupf</groupId>
              <artifactId>zkclient</artifactId>
              <version>0.1</version>
          </dependency>

          <!-- 项目依赖 -->
          <dependency>
              <groupId>com.dtg</groupId>
              <artifactId>springdubbo-api</artifactId>
              <version>1.0-SNAPSHOT</version>
          </dependency>

          <!-- 日志 -->
          <dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-log4j12</artifactId>
          </dependency>
      </dependencies>


      <build>
          <plugins>
              <plugin>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-maven-plugin</artifactId>
              </plugin>
          </plugins>
      </build>

    </project>

    配置application.properties

    server.port=8080
    # dubbo
    dubbo.application.name=xdloan-test
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    dubbo.protocol.name=dubbo

    配置dubbo-provider.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
          xmlns:context="http://www.springframework.org/schema/context"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
       <!-- 提供方应用信息,用于计算依赖关系 -->
       <dubbo:application name="${dubbo.application.name}"/>
       <!-- 使用zookeeper注册中心暴露服务地址 -->
       <dubbo:registry id="register" address="${dubbo.registry.address}"/>
       <dubbo:registry id="local" address="zookeeper://127.0.0.1:2181"/>
       <!-- 用dubbo协议在20880端口暴露服务 -->
       <dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}"/>

       <!-- 声明需要暴露的服务接口(注意是接口,不是实现类) -->
       <!-- 这里是具体实现类,id和上面的暴露的服务接口ref要一致,dubbo就是通过这个来注册对应的服务 -->
       <!-- 同模块的registry使用local,不同模块的使用远程的register -->
       <dubbo:service registry="register" interface="com.dtg.springdubbo.service.ITestFacadeService" ref="testService"/>

    </beans>

    启动类

    DemoproviderApplication.java

    package com.dtg.demoprovider;

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.ImportResource;

    @SpringBootApplication
    @ImportResource("classpath:dubbo-provider.xml")
    public class DemoproviderApplication {

       public static void main(String[] args) {
           SpringApplication.run(DemoproviderApplication.class, args);
      }

    }

     

    服务实现类

    TestServiceImpl.java

    package com.dtg.demoprovider.service;

    import com.dtg.springdubbo.service.ITestFacadeService;
    import org.springframework.stereotype.Service;

    @Service("testService")
    public class TestServiceImpl implements ITestFacadeService {
       @Override
       public String testMethod(String s) {
           System.out.println("testmethod:"+s);
           return "hello "+ s;
      }
    }

    服务消费者 springdubbo-consumer

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
       <parent>
           <groupId>com.dtg</groupId>
           <artifactId>springdubbo</artifactId>
           <version>1.0-SNAPSHOT</version>
       </parent>
       <groupId>com.dtg</groupId>
       <artifactId>springdubbo-consumer</artifactId>
       <version>0.0.1-SNAPSHOT</version>
       <name>springdubbo-consumer</name>
       <description>Demo project for Spring Boot</description>

       <properties>
           <java.version>1.8</java.version>
       </properties>

       <dependencies>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-web</artifactId>
           </dependency>

           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-test</artifactId>
               <scope>test</scope>
               <exclusions>
                   <exclusion>
                       <groupId>org.junit.vintage</groupId>
                       <artifactId>junit-vintage-engine</artifactId>
                   </exclusion>
               </exclusions>
           </dependency>

           <!-- dubbo -->
           <dependency>
               <groupId>com.alibaba</groupId>
               <artifactId>dubbo</artifactId>
               <version>2.5.3</version>
               <exclusions>
                   <exclusion>
                       <groupId>org.springframework</groupId>
                       <artifactId>spring</artifactId>
                   </exclusion>
               </exclusions>
           </dependency>

           <!-- zookeeper -->
           <dependency>
               <groupId>org.apache.zookeeper</groupId>
               <artifactId>zookeeper</artifactId>
               <version>3.4.6</version>
               <exclusions>
                   <exclusion>
                       <groupId>org.slf4j</groupId>
                       <artifactId>slf4j-log4j12</artifactId>
                   </exclusion>
                   <exclusion>
                       <groupId>log4j</groupId>
                       <artifactId>log4j</artifactId>
                   </exclusion>
               </exclusions>
           </dependency>
           <dependency>
               <groupId>com.github.sgroschupf</groupId>
               <artifactId>zkclient</artifactId>
               <version>0.1</version>
           </dependency>

           <!-- 项目依赖 -->
           <dependency>
               <groupId>com.dtg</groupId>
               <artifactId>springdubbo-api</artifactId>
               <version>1.0-SNAPSHOT</version>
           </dependency>
       </dependencies>

       <build>
           <plugins>
               <plugin>
                   <groupId>org.springframework.boot</groupId>
                   <artifactId>spring-boot-maven-plugin</artifactId>
               </plugin>
           </plugins>
       </build>
    </project>

    配置application.properties

    server.port=8080
    # dubbo
    dubbo.application.name=springdubbo-consumer
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    dubbo.protocol.name=dubbo

    配置dubbo-consumer.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
          xmlns:context="http://www.springframework.org/schema/context"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
       <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
       <dubbo:application name="${dubbo.application.name}"/>
       <dubbo:registry id="register" address="${dubbo.registry.address}"/>
       <dubbo:registry id="local" address="zookeeper://127.0.0.1:2181"/>
       <dubbo:protocol name="${dubbo.protocol.name}"/>
       <!-- 生成远程服务代理,可以和本地bean一样调用 -->
       <!-- 同模块的registry使用local,不同模块的使用远程的register -->
       <dubbo:reference registry="register" id="testService" interface="com.dtg.springdubbo.service.ITestFacadeService"/>
    </beans>

    启动类

    package com.dtg.springdubboconsumer;

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.ImportResource;

    @SpringBootApplication
    @ImportResource("classpath:dubbo-customer.xml")
    public class SpringdubboConsumerApplication {

       public static void main(String[] args) {
           SpringApplication.run(SpringdubboConsumerApplication.class, args);
      }

    }

    业务类

    package com.dtg.springdubboconsumer.controller;

    import com.dtg.springdubbo.service.ITestFacadeService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;

    @RestController
    public class TestController {

       @Autowired
       ITestFacadeService testFacadeService;

       @GetMapping("/test/{name}")
       public String test(@PathVariable("name") String name){
          return  testFacadeService.testMethod(name);
      }
    }

     

  • 相关阅读:
    Eclipse配置方法注释模板
    彻底清除Github上某个文件以及历史
    eclipse快捷键
    Hibernate执行原生SQL
    API接口规范
    eclipse配置google代码风格
    eclipse format xml
    git撤销commit
    使用postman测试文件上传
    centos7下部署elasticSearch集群
  • 原文地址:https://www.cnblogs.com/datangguott/p/13922574.html
Copyright © 2011-2022 走看看