美文网首页
Dubbo入门(二)-Springboot集成Dubbo

Dubbo入门(二)-Springboot集成Dubbo

作者: Martain | 来源:发表于2020-08-04 17:03 被阅读0次

上一篇文章我记录了我如何搭建dubbo环境以及使用dubbo,不过那个demo是使用spring框架测试了下而已,我们可以使用springboot集成dubbo,这种基于注解的方式会更加容易让我们使用,于是,我本篇文章就记录了我如何将spring版本的demo改造成使用springboot来集成dubbo

common-api(公共接口包)

common-api是定义的接口包,与上一节的没有什么变化。

├── common-api 
│   ├── pom.xml
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── com
│       │   │       └── martain
│       │   │           └── study
│       │   │               ├── IAdminService.java
│       │   │               ├── IUserService.java
│       │   │               └── vo
│       │   │                   └── UserVO.java 

UserVO.java

@Data
public class UserVO implements Serializable {

    private String id;

    private String userName;

    private Integer age;

    private String email;

}

IUserService.java

public interface IUserService {
    UserVO getUserById(String userId);
}

boot-provider-user

boot-provider-user是用户信息提供服务的模块。这是一个基本的spring-boot-starter的项目

├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── martain
    │   │           └── study
    │   │               ├── BootProviderUserApplication.java
    │   │               └── service
    │   │                   └── UserService.java
    │   └── resources
    │       └── application.yml 

pom.xml

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
  </dependency>
  <!-- 添加接口包依赖 -->
  <dependency>
    <groupId>com.martain.study</groupId>
    <artifactId>common-api</artifactId>
    <version>1.0-SNAPSHOT</version>
  </dependency>
  <!-- dubbo -->
  <dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.3</version>
  </dependency>
  <!--zookeeper 注册中心客户端引入 使用的是curator客户端 -->
  <dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-dependencies-zookeeper</artifactId>
    <version>2.7.4.1</version>
    <type>pom</type>
  </dependency> 
</dependencies>

UserService.java

UserService 实现了 IUserService 的接口,其中需要加上dubbo包中的@Service注解

import org.apache.dubbo.config.annotation.Service;
@Service
@Component
public class UserService implements IUserService {
    @Override
    public UserVO getUserById(String userId) {
        UserVO userVO = new UserVO();
        userVO.setId(userId);
        userVO.setUserName("user-"+userId);
        userVO.setAge(18);
        userVO.setEmail(userId+"@qq.com");
        return userVO;
    }
}

application.yml

dubbo的相关配置可以放置在这里。

dubbo:
  application:
    name: user-service-provider
    registry: zookeeper://127.0.0.1:2181
  metadata-report:
    address: zookeeper://127.0.0.1:2181

BootProviderUserApplication.java

需要在启动类中添加@EnableDubbo注解来启动Dubbo的支持

@EnableDubbo
@SpringBootApplication
public class BootProviderUserApplication {

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

boot-consumer-admin

├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── martain
│   │   │           └── study
│   │   │               ├── BootConsumerAdminApplication.java
│   │   │               └── controller
│   │   │                   └── AdminController.java
│   │   └── resources
│   │       ├── application.yml

pom.xml

boot-consumer-admin模块是一个简单的spring-boot-starter-web项目

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
            <!-- 添加接口包依赖 -->
        <dependency>
            <groupId>com.martain.study</groupId>
            <artifactId>common-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- dubbo-spring-boot-starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <!--zookeeper 注册中心客户端引入 使用的是curator客户端 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.4.1</version>
            <type>pom</type>
        </dependency> 
    </dependencies>

AdminController.java

调用接口需要在注入接口时添加上 @Reference 注解。

这里添加了一个测试接口用来调用远程的接口。

import org.apache.dubbo.config.annotation.Reference;
@RestController
public class AdminController {

    @Reference
    IUserService userService;

    @GetMapping("findUserById/{userId}")
    public UserVO findUserById(@PathVariable String userId){
        return userService.getUserById(userId);
    }
}

application.yml

server:
  port: 8802 
dubbo:
  application:
    name: admin-service-consumer
  registry:
    address: zookeeper://127.0.0.1:2181

BootConsumerAdminApplication.java

需要在启动类中添加@EnableDubbo注解来启动Dubbo的支持

@EnableDubbo
@SpringBootApplication
public class BootConsumerAdminApplication { 
    public static void main(String[] args) {
        SpringApplication.run(BootConsumerAdminApplication.class, args);
    } 
}

测试

➜  ~ curl http://localhost:8802/findUserById/123
{"id":"123","userName":"user-123","age":18,"email":"123@qq.com"}

相关文章

网友评论

      本文标题:Dubbo入门(二)-Springboot集成Dubbo

      本文链接:https://www.haomeiwen.com/subject/idbwrktx.html