springmvc中WebMvcConfigurationSupport中addInterceptor使用详解及方法详解
时间:2024-03-27 17:05:48 来源:网络cs 作者:峨乐 栏目:卖家故事 阅读:
1. addInterceptor简介
在Spring MVC中,WebMvcConfigurationSupport
是一个类,可以通过继承它来进行自定义的MVC配置。在这个类中,可以使用addInterceptor
方法来添加拦截器到请求处理链中。
下面是关于addInterceptor
方法的说明:
java复制代码protected void addInterceptor(InterceptorRegistry registry)
addInterceptor
方法是WebMvcConfigurationSupport
中的方法之一,用于添加拦截器。在子类中重写这个方法,可以向注册表(InterceptorRegistry
)中添加拦截器。通过注册表,可以指定拦截器要拦截的路径、优先级等信息。 总之,addInterceptors(InterceptorRegistry registry)
:用于注册拦截器。我们可以通过重写这个方法,将自定义的拦截器添加到 registry
中。
2. InterceptorRegistry 方法详解
2.1 addPathPatterns(String… patterns)
通过这个方法,我们可以指定要拦截的请求路径模式,使拦截器只对符合指定路径模式的请求进行拦截。
以下是关于 addPathPatterns
方法的说明:
addPathPatterns
方法接受一个或多个字符串参数作为路径模式。路径模式可以使用通配符来匹配多个路径,例如 "/*"
表示根路径和其子路径都会被拦截。该方法可以在添加拦截器时使用,用于指定需要被拦截器处理的路径。拦截的路径模式将被应用于已经设置的拦截路径上。 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new CustomInterceptor()) .addPathPatterns("/api/**"); // 拦截 /api 下的所有请求 }
在上面的示例中,首先通过 addInterceptor
方法添加了一个自定义拦截器 CustomInterceptor
,然后使用 addPathPatterns
方法指定了要拦截的路径模式 /api/**
。
这样配置之后,拦截器将会对所有以 /api/
开头的请求进行拦截处理。
通过使用 addPathPatterns
方法,我们可以更加细粒度地指定拦截器的应用范围,根据具体需求选择性地拦截某些路径。如果不调用 addPathPatterns
方法,则拦截器将对所有请求生效。
2.2 addPathPatterns(List patterns)
通过这个方法,我们可以指定要拦截的请求路径模式列表,使拦截器只对符合指定路径模式的请求进行拦截。
以下是关于 addPathPatterns
方法的说明:
addPathPatterns
方法接受一个字符串列表作为路径模式。
路径模式可以使用通配符来匹配多个路径,例如 "/*"
表示根路径和其子路径都会被拦截。
该方法可以在添加拦截器时使用,用于指定需要被拦截器处理的路径。
拦截的路径模式将被应用于已经设置的拦截路径上。
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new CustomInterceptor()) .addPathPatterns(Arrays.asList("/api/**", "/admin/**")); // 拦截 /api 和 /admin 下的所有请求 }
在上面的示例中,首先通过 addInterceptor
方法添加了一个自定义拦截器 CustomInterceptor
,然后使用 addPathPatterns
方法传入一个路径模式列表,包含了要拦截的路径模式 "/api/**"
和 "/admin/**"
。
这样配置之后,拦截器将会对所有以 /api/
或 /admin/
开头的请求进行拦截处理。
通过使用 addPathPatterns
方法,我们可以更加灵活地指定拦截器的应用范围,根据具体需求选择性地拦截某些路径。如果不调用 addPathPatterns
方法,则拦截器将对所有请求生效。
2.3 excludePathPatterns(String… patterns)
通过这个方法,我们可以指定要排除(不拦截)的请求路径模式,使拦截器不对这些路径的请求进行拦截。
以下是关于 excludePathPatterns
方法的说明:
excludePathPatterns
方法接受一个或多个字符串参数作为路径模式。路径模式可以使用通配符来匹配多个路径,例如 "/*"
表示根路径和其子路径都会被排除。该方法可以在添加拦截器时使用,用于指定哪些路径不需要被拦截器处理。排除的路径模式将被应用于已经设置的拦截路径上。 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new CustomInterceptor()) .addPathPatterns("/api/**") // 拦截 /api 下的所有请求 .excludePathPatterns("/api/public/**"); // 排除 /api/public 下的请求 }
在上面的示例中,首先通过 addInterceptor
方法添加了一个自定义拦截器 CustomInterceptor
,然后使用 addPathPatterns
方法指定了要拦截的路径模式 /api/**
,接着使用 excludePathPatterns
方法指定了要排除的路径模式 /api/public/**
。
这样配置之后,拦截器将会对所有以 /api/
开头的请求进行拦截,但是会排除以 /api/public/
开头的请求,即不会对这些请求进行拦截处理。
通过使用 excludePathPatterns
方法,我们可以更加细粒度地控制拦截器的应用范围,根据具体需求选择性地排除某些路径。
2.4 excludePathPatterns(List patterns)
通过这个方法,我们可以指定要排除(不拦截)的请求路径模式列表,使拦截器不对这些路径的请求进行拦截。
以下是关于 excludePathPatterns
方法的说明:
excludePathPatterns
方法接受一个字符串列表作为路径模式。路径模式可以使用通配符来匹配多个路径,例如 "/*"
表示根路径和其子路径都会被排除。该方法可以在添加拦截器时使用,用于指定哪些路径不需要被拦截器处理。排除的路径模式将被应用于已经设置的拦截路径上。 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new CustomInterceptor()) .addPathPatterns("/api/**") // 拦截 /api 下的所有请求 .excludePathPatterns(Arrays.asList("/api/public/**", "/api/open/**")); // 排除 /api/public 和 /api/open 下的请求 }
在上面的示例中,首先通过 addInterceptor
方法添加了一个自定义拦截器 CustomInterceptor
,然后使用 addPathPatterns
方法指定了要拦截的路径模式 /api/**
,接着使用 excludePathPatterns
方法传入一个排除的路径模式列表,包含了要排除的路径模式 "/api/public/**"
和 "/api/open/**"
。
这样配置之后,拦截器将会对所有以 /api/
开头的请求进行拦截,但是会排除以 /api/public/
和 /api/open/
开头的请求,即不会对这些请求进行拦截处理。
通过使用 excludePathPatterns
方法,我们可以更加细粒度地控制拦截器的应用范围,根据具体需求选择性地排除某些路径。如果不调用 excludePathPatterns
方法,则拦截器将对所有符合拦截路径模式的请求生效。
2.5 pathMatcher(PathMatcher pathMatcher)
该方法用于设置拦截器注册表使用的路径匹配器(PathMatcher)。
以下是关于 pathMatcher(PathMatcher pathMatcher)
方法的说明:
pathMatcher(PathMatcher pathMatcher)
方法接受一个 PathMatcher
对象作为参数,用于设置拦截器注册表使用的路径匹配器。
路径匹配器(PathMatcher)用于判断请求路径是否与设置的路径模式匹配。
默认情况下,Spring MVC 使用的是 Ant 风格的路径匹配器 AntPathMatcher
。
可以通过自定义实现 PathMatcher
接口来创建自己的路径匹配器,例如使用正则表达式等。
通过设置路径匹配器,可以控制拦截器对请求路径的匹配方式。
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new CustomInterceptor()) .addPathPatterns("/api/**") .excludePathPatterns("/api/public/**") .pathMatcher(new RegexPathMatcher()); // 设置自定义的路径匹配器或者使用AntPathMatcher }
在上述示例中,首先通过 addInterceptor
方法添加了一个自定义拦截器 CustomInterceptor
,然后使用 addPathPatterns
方法指定了要拦截的路径模式 /api/**
,使用 excludePathPatterns
方法指定了要排除的路径模式 /api/public/**
,最后使用 pathMatcher
方法传入了一个自定义的路径匹配器 RegexPathMatcher
。
通过设置自定义的路径匹配器,我们可以根据具体需求更灵活地控制拦截器对请求路径的匹配方式。
2.6 order(int order)
它用于设置拦截器的执行顺序。参数是一个整数值,表示侦听器的优先级或执行顺序。order(int order)``InterceptorRegistry``order
在 Spring 中,拦截器根据其分配的订单值以特定顺序执行。首先执行具有较低阶值的拦截器,然后执行具有较高阶值的拦截器。这允许您控制将侦听器应用于请求的顺序。
@Override public void addInterceptors(InterceptorRegistry registry) { MyInterceptor myInterceptor = new MyInterceptor(); registry.addInterceptor(myInterceptor) .addPathPatterns("/api/**") .order(1); // Set the order to 1 }
在此示例中,对于与“/api/**”模式匹配的请求,将以 1 的顺序执行。如果您有多个拦截器,则可以分配不同的订单值来控制其执行顺序。MyInterceptor
请务必注意,如果没有为拦截器显式设置顺序,则会为其分配默认订单值 ,这意味着它将在拦截器链中最后执行。Ordered.LOWEST_PRECEDENCE
本文链接:https://www.kjpai.cn/gushi/2024-03-27/149616.html,文章来源:网络cs,作者:峨乐,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
上一篇:Mysql的安装配置教程(详细)
下一篇:返回列表