diff --git a/pictures/spring-cloud-ribbon-app.png b/pictures/spring-cloud-ribbon-app.png
new file mode 100644
index 0000000..ca0d85a
Binary files /dev/null and b/pictures/spring-cloud-ribbon-app.png differ
diff --git a/pictures/spring-cloud-ribbon-eureka.png b/pictures/spring-cloud-ribbon-eureka.png
new file mode 100644
index 0000000..a63ffa8
Binary files /dev/null and b/pictures/spring-cloud-ribbon-eureka.png differ
diff --git a/pictures/spring-cloud-ribbon-product.png b/pictures/spring-cloud-ribbon-product.png
new file mode 100644
index 0000000..7afe1ee
Binary files /dev/null and b/pictures/spring-cloud-ribbon-product.png differ
diff --git a/pictures/spring-cloud-ribbon-products-8020.png b/pictures/spring-cloud-ribbon-products-8020.png
new file mode 100644
index 0000000..74c28ac
Binary files /dev/null and b/pictures/spring-cloud-ribbon-products-8020.png differ
diff --git a/pictures/spring-cloud-ribbon-products-8030.png b/pictures/spring-cloud-ribbon-products-8030.png
new file mode 100644
index 0000000..9dba249
Binary files /dev/null and b/pictures/spring-cloud-ribbon-products-8030.png differ
diff --git a/spring-cloud/spring-cloud-eureka-cluster/eureka-client/pom.xml b/spring-cloud/spring-cloud-eureka-cluster/eureka-client/pom.xml
index b9372e8..70c9c2f 100644
--- a/spring-cloud/spring-cloud-eureka-cluster/eureka-client/pom.xml
+++ b/spring-cloud/spring-cloud-eureka-cluster/eureka-client/pom.xml
@@ -4,7 +4,7 @@
4.0.0
- com.heibaiying
+ com.heibaiying.eureka.cluster
eureka-cluster
0.0.1-SNAPSHOT
diff --git a/spring-cloud/spring-cloud-eureka-cluster/eureka-server/pom.xml b/spring-cloud/spring-cloud-eureka-cluster/eureka-server/pom.xml
index 8373155..f8ff6cb 100644
--- a/spring-cloud/spring-cloud-eureka-cluster/eureka-server/pom.xml
+++ b/spring-cloud/spring-cloud-eureka-cluster/eureka-server/pom.xml
@@ -4,7 +4,7 @@
4.0.0
- com.heibaiying
+ com.heibaiying.eureka.cluster
eureka-cluster
0.0.1-SNAPSHOT
diff --git a/spring-cloud/spring-cloud-eureka-cluster/pom.xml b/spring-cloud/spring-cloud-eureka-cluster/pom.xml
index 45612e0..d82f180 100644
--- a/spring-cloud/spring-cloud-eureka-cluster/pom.xml
+++ b/spring-cloud/spring-cloud-eureka-cluster/pom.xml
@@ -11,7 +11,7 @@
- com.heibaiying
+ com.heibaiying.eureka.cluster
eureka-cluster
0.0.1-SNAPSHOT
eureka-cluster
diff --git a/spring-cloud/spring-cloud-eureka/eureka-client/pom.xml b/spring-cloud/spring-cloud-eureka/eureka-client/pom.xml
index 1697cc6..4f5237f 100644
--- a/spring-cloud/spring-cloud-eureka/eureka-client/pom.xml
+++ b/spring-cloud/spring-cloud-eureka/eureka-client/pom.xml
@@ -4,7 +4,7 @@
4.0.0
- com.heibaiying
+ com.heibaiying.eureka
eureka
0.0.1-SNAPSHOT
diff --git a/spring-cloud/spring-cloud-eureka/eureka-server/pom.xml b/spring-cloud/spring-cloud-eureka/eureka-server/pom.xml
index 57bc2f6..2f934ac 100644
--- a/spring-cloud/spring-cloud-eureka/eureka-server/pom.xml
+++ b/spring-cloud/spring-cloud-eureka/eureka-server/pom.xml
@@ -4,7 +4,7 @@
4.0.0
- com.heibaiying
+ com.heibaiying.eureka
eureka
0.0.1-SNAPSHOT
diff --git a/spring-cloud/spring-cloud-eureka/pom.xml b/spring-cloud/spring-cloud-eureka/pom.xml
index c900668..681ad06 100644
--- a/spring-cloud/spring-cloud-eureka/pom.xml
+++ b/spring-cloud/spring-cloud-eureka/pom.xml
@@ -11,7 +11,7 @@
- com.heibaiying
+ com.heibaiying.eureka
eureka
0.0.1-SNAPSHOT
eureka
diff --git a/spring-cloud/spring-cloud-feign/common/src/main/java/com/heibaiying/common/bean/Product.java b/spring-cloud/spring-cloud-feign/common/src/main/java/com/heibaiying/common/bean/Product.java
index 462d638..75c3f5b 100644
--- a/spring-cloud/spring-cloud-feign/common/src/main/java/com/heibaiying/common/bean/Product.java
+++ b/spring-cloud/spring-cloud-feign/common/src/main/java/com/heibaiying/common/bean/Product.java
@@ -17,7 +17,7 @@ import java.util.Date;
public class Product implements Serializable {
// 产品序列号
- private int id;
+ private long id;
// 产品名称
private String name;
diff --git a/spring-cloud/spring-cloud-feign/common/src/main/java/com/heibaiying/common/feign/ProductFeign.java b/spring-cloud/spring-cloud-feign/common/src/main/java/com/heibaiying/common/feign/ProductFeign.java
index a90c543..ddcb2e3 100644
--- a/spring-cloud/spring-cloud-feign/common/src/main/java/com/heibaiying/common/feign/ProductFeign.java
+++ b/spring-cloud/spring-cloud-feign/common/src/main/java/com/heibaiying/common/feign/ProductFeign.java
@@ -1,8 +1,7 @@
package com.heibaiying.common.feign;
import com.heibaiying.common.bean.Product;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -12,13 +11,17 @@ import java.util.List;
*/
public interface ProductFeign {
- @RequestMapping("products")
+ @GetMapping("products")
List productList();
/**
* 这是需要强调的是使用feign时候@PathVariable一定要用value指明参数,
* 不然会抛出.IllegalStateException: PathVariable annotation was empty on param 异常
*/
- @RequestMapping("product/{id}")
+ @GetMapping("product/{id}")
Product productDetail(@PathVariable(value = "id") int id);
+
+
+ @PostMapping("product")
+ void save(@RequestBody Product product);
}
diff --git a/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/config/FeignConfig.java b/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/config/FeignConfig.java
new file mode 100644
index 0000000..e0ba1cc
--- /dev/null
+++ b/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/config/FeignConfig.java
@@ -0,0 +1,20 @@
+package com.heibaiying.consumer.config;
+
+import feign.Retryer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+/**
+ * @author : heibaiying
+ * @description : feign 配置
+ */
+@Configuration
+public class FeignConfig {
+
+ @Bean
+ public Retryer retryer(){
+ //重试间隔为 100ms,最大重试时间为 1s, 重试次数为 5 次
+ return new Retryer.Default(100,SECONDS.toMillis(1),5);
+ }
+}
diff --git a/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/controller/SellController.java b/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/controller/SellController.java
index 7b01ffc..d4f949e 100644
--- a/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/controller/SellController.java
+++ b/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/controller/SellController.java
@@ -6,9 +6,9 @@ import com.heibaiying.consumer.feign.CProductFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
+import java.util.Date;
import java.util.List;
/**
@@ -21,17 +21,26 @@ public class SellController {
@Autowired
private CProductFeign cproductFeign;
- @RequestMapping
+ @GetMapping("products")
public String productList(Model model) {
List products = cproductFeign.productList();
model.addAttribute("products", products);
return "products";
}
- @RequestMapping("product/{id}")
+ @GetMapping("product/{id}")
public String productDetail(@PathVariable int id, Model model) {
Product product = cproductFeign.productDetail(id);
model.addAttribute("product", product);
return "product";
}
+
+
+ @PostMapping("product")
+ public String save(@RequestParam String productName) {
+ long id = Math.round(Math.random() * 100);
+ Product product = new Product(id, productName, false, new Date(), 88);
+ cproductFeign.save(product);
+ return "redirect:products";
+ }
}
diff --git a/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/feign/CProductFeign.java b/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/feign/CProductFeign.java
index 588b79b..99a72bc 100644
--- a/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/feign/CProductFeign.java
+++ b/spring-cloud/spring-cloud-feign/consumer/src/main/java/com/heibaiying/consumer/feign/CProductFeign.java
@@ -1,13 +1,14 @@
package com.heibaiying.consumer.feign;
import com.heibaiying.common.feign.ProductFeign;
+import com.heibaiying.consumer.config.FeignConfig;
import org.springframework.cloud.openfeign.FeignClient;
/**
* @author : heibaiying
* @description : 声明式接口调用
*/
-@FeignClient("producer")
+@FeignClient(value = "producer",configuration = FeignConfig.class)
public interface CProductFeign extends ProductFeign {
}
diff --git a/spring-cloud/spring-cloud-feign/consumer/src/main/resources/application.yml b/spring-cloud/spring-cloud-feign/consumer/src/main/resources/application.yml
index 53c4ebd..80bc166 100644
--- a/spring-cloud/spring-cloud-feign/consumer/src/main/resources/application.yml
+++ b/spring-cloud/spring-cloud-feign/consumer/src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
- port: 8030
+ port: 8080
# 指定服务命名
spring:
application:
diff --git a/spring-cloud/spring-cloud-feign/consumer/src/main/resources/templates/products.ftl b/spring-cloud/spring-cloud-feign/consumer/src/main/resources/templates/products.ftl
index 214fac7..14eff50 100644
--- a/spring-cloud/spring-cloud-feign/consumer/src/main/resources/templates/products.ftl
+++ b/spring-cloud/spring-cloud-feign/consumer/src/main/resources/templates/products.ftl
@@ -5,11 +5,15 @@
产品列表:点击查看详情
+
diff --git a/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/controller/ProducerController.java b/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/controller/ProducerController.java
index 1c8888a..7827491 100644
--- a/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/controller/ProducerController.java
+++ b/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/controller/ProducerController.java
@@ -5,9 +5,7 @@ import com.heibaiying.common.bean.Product;
import com.heibaiying.common.feign.ProductFeign;
import com.heibaiying.producer.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -15,18 +13,23 @@ import java.util.List;
* @author : heibaiying
*/
@RestController
-public class ProducerController{
+public class ProducerController implements ProductFeign {
@Autowired
private IProductService productService;
- @RequestMapping("products")
+ @GetMapping("products")
public List productList() {
return productService.queryAllProducts();
}
- @RequestMapping("product/{id}")
+ @GetMapping("product/{id}")
public Product productDetail(@PathVariable int id) {
return productService.queryProductById(id);
}
+
+ @PostMapping("product")
+ public void save(@RequestBody Product product) {
+ productService.saveProduct(product);
+ }
}
diff --git a/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/service/IProductService.java b/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/service/IProductService.java
index a7e0bbf..0a55013 100644
--- a/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/service/IProductService.java
+++ b/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/service/IProductService.java
@@ -8,4 +8,6 @@ public interface IProductService {
Product queryProductById(int id) ;
List queryAllProducts();
+
+ void saveProduct(Product product);
}
diff --git a/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/service/impl/ProductService.java b/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/service/impl/ProductService.java
index 3b6f015..351e71e 100644
--- a/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/service/impl/ProductService.java
+++ b/spring-cloud/spring-cloud-feign/producer/src/main/java/com/heibaiying/producer/service/impl/ProductService.java
@@ -2,6 +2,8 @@ package com.heibaiying.producer.service.impl;
import com.heibaiying.common.bean.Product;
import com.heibaiying.producer.service.IProductService;
+import org.springframework.boot.web.context.WebServerInitializedEvent;
+import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -13,16 +15,10 @@ import java.util.List;
* @description : 产品提供接口实现类
*/
@Service
-public class ProductService implements IProductService {
+public class ProductService implements IProductService, ApplicationListener {
private static List productList = new ArrayList<>();
- static {
- for (int i = 0; i < 20; i++) {
- productList.add(new Product(i, "产品" + i, i / 2 == 0, new Date(), 66.66f * i));
- }
- }
-
public Product queryProductById(int id) {
for (Product product : productList) {
if (product.getId() == id) {
@@ -36,4 +32,17 @@ public class ProductService implements IProductService {
public List queryAllProducts() {
return productList;
}
-}
+
+ @Override
+ public void saveProduct(Product product) {
+ productList.add(product);
+ }
+
+ @Override
+ public void onApplicationEvent(WebServerInitializedEvent event) {
+ int port = event.getWebServer().getPort();
+ for (long i = 0; i < 20; i++) {
+ productList.add(new Product(i, port + "产品" + i, i / 2 == 0, new Date(), 66.66f * i));
+ }
+ }
+}
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-ribbon/common/pom.xml b/spring-cloud/spring-cloud-ribbon/common/pom.xml
index caeb464..beea71a 100644
--- a/spring-cloud/spring-cloud-ribbon/common/pom.xml
+++ b/spring-cloud/spring-cloud-ribbon/common/pom.xml
@@ -4,7 +4,7 @@
4.0.0
- com.heibaiying
+ com.heibaiying.ribbon
spring-cloud-ribbon
0.0.1-SNAPSHOT
diff --git a/spring-cloud/spring-cloud-ribbon/common/src/main/java/com/heibaiying/common/api/IProductService.java b/spring-cloud/spring-cloud-ribbon/common/src/main/java/com/heibaiying/common/api/IProductService.java
index d86874e..7296ffd 100644
--- a/spring-cloud/spring-cloud-ribbon/common/src/main/java/com/heibaiying/common/api/IProductService.java
+++ b/spring-cloud/spring-cloud-ribbon/common/src/main/java/com/heibaiying/common/api/IProductService.java
@@ -13,4 +13,6 @@ public interface IProductService {
Product queryProductById(int id);
List queryAllProducts();
+
+ void saveProduct(Product product);
}
diff --git a/spring-cloud/spring-cloud-ribbon/common/src/main/java/com/heibaiying/common/bean/Product.java b/spring-cloud/spring-cloud-ribbon/common/src/main/java/com/heibaiying/common/bean/Product.java
index 462d638..75c3f5b 100644
--- a/spring-cloud/spring-cloud-ribbon/common/src/main/java/com/heibaiying/common/bean/Product.java
+++ b/spring-cloud/spring-cloud-ribbon/common/src/main/java/com/heibaiying/common/bean/Product.java
@@ -17,7 +17,7 @@ import java.util.Date;
public class Product implements Serializable {
// 产品序列号
- private int id;
+ private long id;
// 产品名称
private String name;
diff --git a/spring-cloud/spring-cloud-ribbon/consumer/pom.xml b/spring-cloud/spring-cloud-ribbon/consumer/pom.xml
index 90106c2..5318b49 100644
--- a/spring-cloud/spring-cloud-ribbon/consumer/pom.xml
+++ b/spring-cloud/spring-cloud-ribbon/consumer/pom.xml
@@ -4,7 +4,7 @@
4.0.0
- com.heibaiying
+ com.heibaiying.ribbon
spring-cloud-ribbon
0.0.1-SNAPSHOT
@@ -31,7 +31,7 @@
- com.heibaiying.eureka
+ com.heibaiying.ribbon
common
0.0.1-SNAPSHOT
compile
diff --git a/spring-cloud/spring-cloud-ribbon/consumer/src/main/java/com/heibaiying/consumer/controller/SellController.java b/spring-cloud/spring-cloud-ribbon/consumer/src/main/java/com/heibaiying/consumer/controller/SellController.java
index 734e6c8..2b5d6f7 100644
--- a/spring-cloud/spring-cloud-ribbon/consumer/src/main/java/com/heibaiying/consumer/controller/SellController.java
+++ b/spring-cloud/spring-cloud-ribbon/consumer/src/main/java/com/heibaiying/consumer/controller/SellController.java
@@ -6,9 +6,9 @@ import com.heibaiying.common.bean.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
+import java.util.Date;
import java.util.List;
/**
@@ -21,17 +21,25 @@ public class SellController {
@Autowired
private IProductService productService;
- @RequestMapping
+ @GetMapping("products")
public String productList(Model model) {
List products = productService.queryAllProducts();
model.addAttribute("products", products);
return "products";
}
- @RequestMapping("product/{id}")
+ @GetMapping("product/{id}")
public String productDetail(@PathVariable int id, Model model) {
Product product = productService.queryProductById(id);
model.addAttribute("product", product);
return "product";
}
+
+ @PostMapping("product")
+ public String save(@RequestParam String productName) {
+ long id = Math.round(Math.random() * 100);
+ Product product = new Product(id, productName, false, new Date(), 88);
+ productService.saveProduct(product);
+ return "redirect:products";
+ }
}
diff --git a/spring-cloud/spring-cloud-ribbon/consumer/src/main/java/com/heibaiying/consumer/service/ProductService.java b/spring-cloud/spring-cloud-ribbon/consumer/src/main/java/com/heibaiying/consumer/service/ProductService.java
index 48c76f7..3c9e09d 100644
--- a/spring-cloud/spring-cloud-ribbon/consumer/src/main/java/com/heibaiying/consumer/service/ProductService.java
+++ b/spring-cloud/spring-cloud-ribbon/consumer/src/main/java/com/heibaiying/consumer/service/ProductService.java
@@ -31,4 +31,7 @@ public class ProductService implements IProductService {
return productList;
}
+ public void saveProduct(Product product) {
+ restTemplate.postForObject("http://producer/product", product, Void.class);
+ }
}
diff --git a/spring-cloud/spring-cloud-ribbon/consumer/src/main/resources/application.yml b/spring-cloud/spring-cloud-ribbon/consumer/src/main/resources/application.yml
index 53c4ebd..80bc166 100644
--- a/spring-cloud/spring-cloud-ribbon/consumer/src/main/resources/application.yml
+++ b/spring-cloud/spring-cloud-ribbon/consumer/src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
- port: 8030
+ port: 8080
# 指定服务命名
spring:
application:
diff --git a/spring-cloud/spring-cloud-ribbon/consumer/src/main/resources/templates/products.ftl b/spring-cloud/spring-cloud-ribbon/consumer/src/main/resources/templates/products.ftl
index 214fac7..14eff50 100644
--- a/spring-cloud/spring-cloud-ribbon/consumer/src/main/resources/templates/products.ftl
+++ b/spring-cloud/spring-cloud-ribbon/consumer/src/main/resources/templates/products.ftl
@@ -5,11 +5,15 @@
产品列表:点击查看详情
+
diff --git a/spring-cloud/spring-cloud-ribbon/eureka/pom.xml b/spring-cloud/spring-cloud-ribbon/eureka/pom.xml
index 05f297d..9ab0aaf 100644
--- a/spring-cloud/spring-cloud-ribbon/eureka/pom.xml
+++ b/spring-cloud/spring-cloud-ribbon/eureka/pom.xml
@@ -4,7 +4,7 @@
4.0.0
- com.heibaiying
+ com.heibaiying.ribbon
spring-cloud-ribbon
0.0.1-SNAPSHOT
diff --git a/spring-cloud/spring-cloud-ribbon/pom.xml b/spring-cloud/spring-cloud-ribbon/pom.xml
index afc8f0e..3eaeabc 100644
--- a/spring-cloud/spring-cloud-ribbon/pom.xml
+++ b/spring-cloud/spring-cloud-ribbon/pom.xml
@@ -11,7 +11,7 @@
- com.heibaiying
+ com.heibaiying.ribbon
spring-cloud-ribbon
0.0.1-SNAPSHOT
spring-cloud-ribbon
diff --git a/spring-cloud/spring-cloud-ribbon/producer/pom.xml b/spring-cloud/spring-cloud-ribbon/producer/pom.xml
index e62167a..e346058 100644
--- a/spring-cloud/spring-cloud-ribbon/producer/pom.xml
+++ b/spring-cloud/spring-cloud-ribbon/producer/pom.xml
@@ -22,7 +22,7 @@
- com.heibaiying.eureka
+ com.heibaiying.ribbon
common
0.0.1-SNAPSHOT
compile
diff --git a/spring-cloud/spring-cloud-ribbon/producer/src/main/java/com/heibaiying/producer/controller/ProducerController.java b/spring-cloud/spring-cloud-ribbon/producer/src/main/java/com/heibaiying/producer/controller/ProducerController.java
index cdb597f..c625b5c 100644
--- a/spring-cloud/spring-cloud-ribbon/producer/src/main/java/com/heibaiying/producer/controller/ProducerController.java
+++ b/spring-cloud/spring-cloud-ribbon/producer/src/main/java/com/heibaiying/producer/controller/ProducerController.java
@@ -4,9 +4,7 @@ package com.heibaiying.producer.controller;
import com.heibaiying.common.api.IProductService;
import com.heibaiying.common.bean.Product;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -19,13 +17,18 @@ public class ProducerController {
@Autowired
private IProductService productService;
- @RequestMapping("products")
+ @GetMapping("products")
public List productList() {
return productService.queryAllProducts();
}
- @RequestMapping("product/{id}")
+ @GetMapping("product/{id}")
public Product productDetail(@PathVariable int id) {
return productService.queryProductById(id);
}
+
+ @PostMapping("product")
+ public void save(@RequestBody Product product) {
+ productService.saveProduct(product);
+ }
}
diff --git a/spring-cloud/spring-cloud-ribbon/producer/src/main/java/com/heibaiying/producer/service/ProductService.java b/spring-cloud/spring-cloud-ribbon/producer/src/main/java/com/heibaiying/producer/service/ProductService.java
index e010634..2c7a7c9 100644
--- a/spring-cloud/spring-cloud-ribbon/producer/src/main/java/com/heibaiying/producer/service/ProductService.java
+++ b/spring-cloud/spring-cloud-ribbon/producer/src/main/java/com/heibaiying/producer/service/ProductService.java
@@ -2,6 +2,8 @@ package com.heibaiying.producer.service;
import com.heibaiying.common.api.IProductService;
import com.heibaiying.common.bean.Product;
+import org.springframework.boot.web.context.WebServerInitializedEvent;
+import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -13,16 +15,10 @@ import java.util.List;
* @description : 产品提供接口实现类
*/
@Service
-public class ProductService implements IProductService {
+public class ProductService implements IProductService, ApplicationListener {
private static List productList = new ArrayList<>();
- static {
- for (int i = 0; i < 20; i++) {
- productList.add(new Product(i, "产品" + i, i / 2 == 0, new Date(), 66.66f * i));
- }
- }
-
public Product queryProductById(int id) {
for (Product product : productList) {
if (product.getId() == id) {
@@ -36,4 +32,17 @@ public class ProductService implements IProductService {
public List queryAllProducts() {
return productList;
}
+
+ @Override
+ public void saveProduct(Product product) {
+ productList.add(product);
+ }
+
+ @Override
+ public void onApplicationEvent(WebServerInitializedEvent event) {
+ int port = event.getWebServer().getPort();
+ for (long i = 0; i < 20; i++) {
+ productList.add(new Product(i, port + "产品" + i, i / 2 == 0, new Date(), 66.66f * i));
+ }
+ }
}