如何使服务提供者返回类型不再是String而是返回对象?

完成:第一遍

1.如何使服务提供者返回类型不再是String而是返回对象?

微服务项目中一般会把共用的东西放到Common Project中

步骤一:创建Module
首先选中当前项目右键

——》 New

——》Module

——》Maven

——》Next

**——》
Name:common
点开Artifact Coordinates
GroupId:com.adbycool.common
ArtifactId:common
**

——》Finish

——》保存,然后点击Import Changes

步骤二.在src\main\java\com\adbycool\common下新建一个Product 类

package com.adbycool.common;

public class Product {

    private String code;
    private String name;
    private String summary;
    private String description;

    public void setCode(String code) {
        this.code = code;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getCode() {
        return code;
    }

    public String getName() {
        return name;
    }

    public String getSummary() {
        return summary;
    }

    public String getDescription() {
        return description;
    }
}

步骤三.在buildingservice项目的src\main\java\com\adbycool\building\service\controller中创建返回Product类型的list的方法

package com.adbycool.building.service.controller;

import com.adbycool.common.Product;
import org.springframework.web.bind.annotation.*;

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

@RestController
@RequestMapping("building")
public class BuildingController {
    @GetMapping("message")
    public String show(){
        return "欢迎来到我的世界......";
    }

    @GetMapping("products")
    public List<Product> findProducts(){
    
        List<Product> productList = new ArrayList<Product>();
        
        Product product1 = new Product();
        product1.setCode("10000001");
        product1.setName("Spring Framework");
        product1.setSummary("involving ioc & aop.......");
        product1.setDescription("this is description of spring framework");
        productList.add(product1);

        Product product2 = new Product();
        product2.setCode("10000002");
        product2.setName("Spring Cloud");
        product2.setSummary("Spring Cloud Summary");
        product2.setDescription("Spring Cloud Description");
        productList.add(product2);

        return productList;
    }
}

导入Product时,点击Add dependency on module ‘common’,会自动把关于Product dependency加载到pom.xml

重启buildingservice项目
浏览器输入url为:localhost:8002/building/products

步骤四:修改buildingconsumer项目的调用
先修改src\main\java\com\adbycool\building\consumer下的BuildingInterface 类

package com.itzhiya.building.consumer;

import com.itzhiya.common.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;

@FeignClient(name="buildingservice/building", fallback = BuildingFallback.class)
public interface BuildingInterface {
    @GetMapping("message")
    public String show();

    @GetMapping("products")
    public List<Product> findProducts();
}

然后修改src\main\java\com\adbycool\building\consumer下的BuildingController 类

package com.itzhiya.building.consumer;

import com.itzhiya.common.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.List;

@RestController
@RequestMapping("building")
public class BuildingController {

    @Autowired
    private BuildingInterface buildingInterface;

    @GetMapping("message")
    public String show(){
        return buildingInterface.show();
    }

    @GetMapping("products")
    public List<Product> findAllProducts(){
        return buildingInterface.findProducts();
    }

}

重启buildingconsumer项目
浏览器输入url为:localhost:8003/building/products

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐