dubbo从入门到精通 springboot整合dubbo(七)

1、公共模块(声明公共接口、实体类)

一、工程目录

 

二、UserAddress.java

复制代码
package com.mongoubiubiu.bean;

import java.io.Serializable;

/**
 * 用户地址 
 *
 */

public class UserAddress implements Serializable {
    
    private Integer id;
    private String userAddress; //用户地址
    private String userId; //用户id
    private String consignee; //收货人
    private String phoneNum; //电话号码
    private String isDefault; //是否为默认地址    Y-是     N-否
    
    public UserAddress() {
        super();
        // TODO Auto-generated constructor stub
    }
    
    public UserAddress(Integer id, String userAddress, String userId, String consignee, String phoneNum,
            String isDefault) {
        super();
        this.id = id;
        this.userAddress = userAddress;
        this.userId = userId;
        this.consignee = consignee;
        this.phoneNum = phoneNum;
        this.isDefault = isDefault;
    }


    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserAddress() {
        return userAddress;
    }
    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getConsignee() {
        return consignee;
    }
    public void setConsignee(String consignee) {
        this.consignee = consignee;
    }
    public String getPhoneNum() {
        return phoneNum;
    }
    public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
    }
    public String getIsDefault() {
        return isDefault;
    }
    public void setIsDefault(String isDefault) {
        this.isDefault = isDefault;
    }

}
复制代码

二、OrderService.java

复制代码
package com.mongoubiubiu.service;

import java.util.List;
import com.mongoubiubiu.bean.UserAddress;

public interface OrderService {


    public List<UserAddress> initOrder(String userId);

}
复制代码

三、UserService.java

复制代码
package com.mongoubiubiu.service;

import com.mongoubiubiu.bean.UserAddress;

import java.util.List;





public interface UserService {
    
    /**
     * 按照用户id返回所有的收货地址
     * @param userId
     * @return
     */
    public List<UserAddress> getUserAddressList(String userId);

}
复制代码

五、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>org.mongoubiubiu</groupId>
    <artifactId>dubbo-commons</artifactId>
    <version>1.0-SNAPSHOT</version>


</project>
复制代码

2、服务提供者

一、工程目录

 

二、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>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.mangoubiubiu</groupId>
    <artifactId>user-provider-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>user-provider-boot</name>
    <description>服务提供者</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--引入公共依赖-->
        <dependency>
            <groupId>org.mongoubiubiu</groupId>
            <artifactId>dubbo-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--导入dubbostarer-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.12</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
复制代码

三、application.properties

复制代码
dubbo.application.name=user-service-provider
dubbo.registry.address=127.0.0.1:2181
dubbo.registry.protocol=zookeeper

dubbo.protocol.name=dubbo
dubbo.protocol.port=20883

dubbo.monitor.protocol=registry

dubbo.config-center.timeout=10000
复制代码

四、UserServiceImpl.java

复制代码
package com.mangoubiubiu.service.impl;

import com.mongoubiubiu.bean.UserAddress;
import com.mongoubiubiu.service.UserService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;


import java.util.ArrayList;
import java.util.List;


@Service//暴露服务
@Component
public class UserServiceImpl implements UserService {

    public List<UserAddress> getUserAddressList(String userId) {
        UserAddress address1 = new UserAddress(1, "湖南省常德", "1", "1111", "010-56253825", "Y");
        UserAddress address2 = new UserAddress(2, "湖南省长沙", "1", "3333", "010-56253825", "N");

        List<UserAddress> list=new ArrayList<>();
        
        list.add(address1);
        list.add(address2);

       return list;
    }

}
复制代码

五、启动类(UserProviderBootApplication.java)

复制代码
package com.mangoubiubiu;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableDubbo
@SpringBootApplication
public class UserProviderBootApplication {

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

}
复制代码

3、服务消费者

一、工程目录

 

二、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>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.mangoubiubiu</groupId>
    <artifactId>user-consumer-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>user-consumer-boot</name>
    <description>服务消费者</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <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>
        <!--引入公共依赖-->
        <dependency>
            <groupId>org.mongoubiubiu</groupId>
            <artifactId>dubbo-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--导入dubbostarer-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.12</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <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-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</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=8000
dubbo.application.name=user-service-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.monitor.protocol=registry

四、OrderServiceImpl.java

复制代码
package com.mangoubiubiu.service.Impl;



import com.alibaba.dubbo.config.annotation.Reference;
import com.mongoubiubiu.bean.UserAddress;
import com.mongoubiubiu.service.OrderService;
import com.mongoubiubiu.service.UserService;


import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class OrderServiceImpl implements OrderService {

    @DubboReference( url = "dubbo://127.0.0.1:20883")
    UserService userService;
    

    public List<UserAddress> initOrder(String userId) {


        System.out.println("用户id"+userId);
        userService.getUserAddressList(userId)
                   .stream()
                   .forEach((o)->{
                     System.out.println(o.getUserAddress());
                   });
        return  userService.getUserAddressList(userId);
    }



}
复制代码

五、UserController.java

复制代码
package com.mangoubiubiu.controller;

import com.mongoubiubiu.bean.UserAddress;
import com.mongoubiubiu.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private OrderService service;


    @GetMapping("/info/{id}")
    public List<UserAddress> getUserInfo(@PathVariable Integer id){
        return service.initOrder(String.valueOf(id));
    }

    @GetMapping("/success")
    public String getUserInfos(){
        return "success";
    }
}
复制代码

五、启动类(UserConsumerBootApplication.java)

复制代码
package com.mangoubiubiu;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableDubbo//开启基于注解的dubbo功能
@SpringBootApplication
public class UserConsumerBootApplication {

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

}
复制代码

4、测试

一、启动服务提供者

 

二、进入dubbo管理控制台查看 

三、开启消费者消费

 

四、访问controller 中的请求地址 

服务调用成功 success

 

本文作者:KwFruit

本文链接:https://www.cnblogs.com/mangoubiubiu/p/14903430.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   KwFruit  阅读(83)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起