diff --git a/lab-46/lab-46-sentinel-demo/pom.xml b/lab-46/lab-46-sentinel-demo/pom.xml
index ef13e74d..225debc3 100644
--- a/lab-46/lab-46-sentinel-demo/pom.xml
+++ b/lab-46/lab-46-sentinel-demo/pom.xml
@@ -43,7 +43,7 @@
sentinel-parameter-flow-control
1.7.1
-
+
com.alibaba.csp
sentinel-annotation-aspectj
diff --git a/lab-46/lab-46-sentinel-demo/src/main/java/cn/iocoder/springboot/lab46/sentineldemo/config/SpringMvcConfiguration.java b/lab-46/lab-46-sentinel-demo/src/main/java/cn/iocoder/springboot/lab46/sentineldemo/config/SpringMvcConfiguration.java
index e3a54d48..c6d06427 100644
--- a/lab-46/lab-46-sentinel-demo/src/main/java/cn/iocoder/springboot/lab46/sentineldemo/config/SpringMvcConfiguration.java
+++ b/lab-46/lab-46-sentinel-demo/src/main/java/cn/iocoder/springboot/lab46/sentineldemo/config/SpringMvcConfiguration.java
@@ -23,6 +23,20 @@ public class SpringMvcConfiguration implements WebMvcConfigurer {
SentinelWebMvcConfig config = new SentinelWebMvcConfig();
config.setHttpMethodSpecify(true); // 是否包含请求方法。即基于 URL 创建的资源,是否包含 Method。
// config.setBlockExceptionHandler(new DefaultBlockExceptionHandler()); // 设置 BlockException 处理器。
+// config.setOriginParser(new RequestOriginParser() { // 设置请求来源解析器。用于黑白名单控制功能。
+//
+// @Override
+// public String parseOrigin(HttpServletRequest request) {
+// // 从 Header 中,获得请求来源
+// String origin = request.getHeader("s-user");
+// // 如果为空,给一个默认的
+// if (StringUtils.isEmpty(origin)) {
+// origin = "default";
+// }
+// return origin;
+// }
+//
+// });
// 添加 SentinelWebInterceptor 拦截器
registry.addInterceptor(new SentinelWebInterceptor(config)).addPathPatterns("/**");
diff --git a/lab-46/lab-46-sentinel-demo/src/main/java/cn/iocoder/springboot/lab46/sentineldemo/controller/DemoController.java b/lab-46/lab-46-sentinel-demo/src/main/java/cn/iocoder/springboot/lab46/sentineldemo/controller/DemoController.java
index 50120bce..4baee86a 100644
--- a/lab-46/lab-46-sentinel-demo/src/main/java/cn/iocoder/springboot/lab46/sentineldemo/controller/DemoController.java
+++ b/lab-46/lab-46-sentinel-demo/src/main/java/cn/iocoder/springboot/lab46/sentineldemo/controller/DemoController.java
@@ -1,6 +1,9 @@
package cn.iocoder.springboot.lab46.sentineldemo.controller;
+import com.alibaba.csp.sentinel.Entry;
+import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
+import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -25,10 +28,32 @@ public class DemoController {
return "sleep";
}
+ // 测试热点参数限流
@GetMapping("/product_info")
@SentinelResource("demo_product_info_hot")
public String productInfo(Integer id) {
return "商品编号:" + id;
}
+ // 手动使用 Sentinel 客户端 API
+ @GetMapping("/entry_demo")
+ public String entryDemo() {
+ Entry entry = null;
+ try {
+ // 访问资源
+ entry = SphU.entry("entry_demo");
+
+ // ... 执行业务逻辑
+
+ return "执行成功";
+ } catch (BlockException ex) {
+ return "被拒绝";
+ } finally {
+ // 释放资源
+ if (entry != null) {
+ entry.exit();
+ }
+ }
+ }
+
}