概述
在研究sentinel的时候遇到一个问题:
本地服务注册到sentinel控制台后,相关的controller接口并不会被识别成资源,只有显式的在接口上添加 @SentinelResource 注解,才能被识别成资源。
这样当然是不行的,对于一些已经存在了的项目,代码是有较大入侵的,得在每一个controller上加上 @SentinelResource,还得给每个接口指定资源名称,这要是有几百个接口,工作量太大了。为此查了不少资料,可能是搜索描述不够准确,找了很久,最后在官方文档上找到了解决方法。
官网链接如下:Sentinel 提供针对 Servlet 的原生整合
其实比较简单,只需要两步:
1、引入依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-web-servlet</artifactId>
<version>x.y.z</version>
</dependency>
2、添加过滤器
@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识别成资源所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复