如何使服务提供者返回类型不再是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