在研究sentinel的时候遇到一个问题:
本地服务注册到sentinel控制台后,相关的controller接口并不会被识别成资源,只有显式的在接口上添加 @SentinelResource 注解,才能被识别成资源。
这样当然是不行的,对于一些已经存在了的项目,代码是有较大入侵的,得在每一个controller上加上 @SentinelResource,还得给每个接口指定资源名称,这要是有几百个接口,工作量太大了。为此查了不少资料,可能是搜索描述不够准确,找了很久,最后在官方文档上找到了解决方法。
官网链接如下:Sentinel 提供针对 Servlet 的原生整合
其实比较简单,只需要两步:
1、引入依赖
复制代码
1
2
3
4
5<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-web-servlet</artifactId> <version>x.y.z</version> </dependency>
2、添加过滤器
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14@Configuration public class FilterConfig { @Bean public FilterRegistrationBean sentinelFilterRegistration() { FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>(); registration.setFilter(new CommonFilter()); registration.addUrlPatterns("/*"); registration.setName("sentinelFilter"); registration.setOrder(1); return registration; } }
接入 filter 之后,所有访问的 Web URL 就会被自动统计为 Sentinel 的资源,可以针对单个 URL 维度进行流控。
最后
以上就是大意皮皮虾最近收集整理的关于Controller接口无法自动被Sentinel识别成资源的全部内容,更多相关Controller接口无法自动被Sentinel识别成资源内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复