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)); + } + } }