首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MappedInterceptor Bean Vs WebMvcConfigurer addInterceptors。添加Spring HandlerInterceptor的正确(现代)方式是什么?

在Spring框架中,我们可以使用两种方式来添加HandlerInterceptor,即MappedInterceptor Bean和WebMvcConfigurer的addInterceptors方法。

  1. MappedInterceptor Bean: MappedInterceptor Bean是一种简单的方式,通过在Spring配置文件中定义一个MappedInterceptor Bean来添加HandlerInterceptor。MappedInterceptor是一个拦截器映射器,用于将拦截器绑定到指定的URL路径或路径模式。

下面是使用MappedInterceptor Bean的步骤: Step 1: 创建一个实现HandlerInterceptor接口的自定义拦截器类。 Step 2: 在Spring配置文件中配置MappedInterceptor Bean,指定拦截器和拦截路径。可以使用<mvc:interceptors>标签或者通过Java配置类的@Bean注解来实现。 Step 3: 将配置文件加载到Spring容器中。

示例配置文件(XML格式):

代码语言:txt
复制
<mvc:interceptors>
    <bean class="com.example.MyInterceptor" />
    <mvc:interceptor>
        <mvc:mapping path="/path1" />
        <mvc:mapping path="/path2/**" />
        <bean class="com.example.AnotherInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

示例Java配置类:

代码语言:txt
复制
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor());
        registry.addInterceptor(new AnotherInterceptor()).addPathPatterns("/path1", "/path2/**");
    }
}
  1. WebMvcConfigurer的addInterceptors方法: 另一种添加HandlerInterceptor的方式是实现WebMvcConfigurer接口,并重写其中的addInterceptors方法。这个方法允许我们注册自定义的拦截器并指定其拦截路径。

下面是使用WebMvcConfigurer的addInterceptors方法的步骤: Step 1: 创建一个实现HandlerInterceptor接口的自定义拦截器类。 Step 2: 创建一个实现WebMvcConfigurer接口的配置类。 Step 3: 在配置类中重写addInterceptors方法,将自定义拦截器注册到InterceptorRegistry中。

示例配置类:

代码语言:txt
复制
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor());
        registry.addInterceptor(new AnotherInterceptor()).addPathPatterns("/path1", "/path2/**");
    }
}

以上两种方式都能有效地添加HandlerInterceptor,具体选择哪种方式取决于个人偏好和项目需求。需要注意的是,addInterceptors方法可以同时用于注册多个拦截器,并且可以通过addPathPatterns方法来指定不同的拦截路径。

推荐的腾讯云产品: 腾讯云提供了丰富的云计算产品,其中适用于部署和管理Spring应用程序的产品包括云服务器、负载均衡、容器服务、弹性伸缩、数据库等。你可以根据具体需求选择合适的产品。

更多关于腾讯云产品的信息,请访问腾讯云官网:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 为什么你写拦截器中不能注入Java bean

    拦截器是Spring提供,所以可以将拦截器注成bean,由IOC容器来管理。...实现拦截器方式很简单,主要由以下两个步骤: 自定义拦截器类实现HandlerInterceptor接口 自定义WebMvc配置类实现WebMvcConfigurer接口,添加自定义拦截器类 简要实现代码如下...现在添加拦截器时候是 new 了一个拦截器,也就是说并没有将拦截器托管给IOC容器,所以就无法引入Springbean对象。...token业务类,然后在初始化拦截器时候将业务类通过构造器带入拦截器中,这样就不用把拦截器注成Spring Bean对象了。...我们需要保证是在WebMvc配置类中添加拦截器是Spring 一个bean对象,也就是说我们需要将拦截器注成一个bean,同时将这个bean添加WebMvc配置类中。

    94330

    【二十二】springboot整合拦截器实战并对比过滤器

    本章和上章相比,通过使用拦截器方式去模拟处理token校验,再之后通过两者对比,比较一下两者不同。下面开始拦截器基础用法学习。...WebMvcConfigurer接口addInterceptors方法实现,老版本WebMvcConfigurerAdapter使用时发现已经被淘汰了,不推荐使用了。...1、拦截器是spring里面的,归于spring管理,所有他可以引入spring管理其他bean直接使用,而过滤器不行,如下: 新增一个拿来测试spring管理service ​​...spring容器,导致加载过滤器后,bean对象还是空;有的说是因为过滤器属于javax.servlet下面的,不归spring容器管理。...过滤器也有方法引入springbean对象来使用,这里就不展开了。 2、拦截器是spring在基于反射机制实现,过滤器是基于servlet回调实现

    28810

    第四十九章:SpringBoot2.0新特性 - 你get到WebMvcConfigurer两种配置方式了吗?

    WebMvcConfigurer 采用JavaBean方式我们只需要添加一个web相关配置类型,并且配置@Configuration注解,将该配置类托管给Spring IOC完成配置,代码配置如下所示...注解返回值来完成WebMvcConfigurer配置实例化,在WebMvcConfigurer接口实例内调用addInterceptors方法完成添加拦截器配置,跟之前WebMvcConfigurerAdapter...测试拦截器 在上面配置内添加了一个LogInterceptor拦截器,该拦截器目的很简单,仅仅是测试拦截器配置是否生效,代码也很简单,输出访问地址URI,实现代码如下所示: @Component public...JavaBean配置WebMvcConfigurer方式是可以生效,回想文章开头说到关键字deault,既然default修饰方法可以不被子类实现,那么我们完全可以实现WebMvcConfigurer...接口,来添加对应配置,下面我们来尝试添加一个新配置类使用实现接口方式添加拦截器配置。

    46340

    【小家SpringSpring MVC容器web九大组件之---HandlerMapping源码详解(一)---BeanNameUrlHandlerMapping系列

    类型bean添加到adaptedInterceptors中 detectMappedInterceptors(this.adaptedInterceptors); // 将interceptors...进行包装适配 initInterceptors(); } // 去容器(含祖孙容器)内找到所有的MappedInterceptor类型拦截器出来,添加进去 非单例Bean也包含 //...备注MappedInterceptorSpring MVC拦截器接口`HandlerInterceptor`实现类 并且是个final类 Spring3.0后出来。...:如果说上述方式是交给Spring去帮我自动处理,这种方式相当于自己手动来处理~~~~~ // 请务必注意: 请务必注意:此处返回值必须是MappedInterceptor,而不能是HandlerInterceptor...**需要注意是,**若你拦截器里想去使用Spring容器内其它Bean,请不用使用new方式,而是应该交给Spring管理(可用@Component)。

    1.4K31

    Java 拦截器

    …【emmm….我想应该不会有人这么干吧…】,常见可以使用以下几种方式: 使用AOP切面功能来实现 使用Spring拦截器相关接口来自定义拦截器 实现WebMvcConfigurer接口,重写addCorsMappings...实现WebMvcConfigurer接口方式   WebMvcConfigurer配置类其实是Spring内部一种配置方式,采用JavaBean形式来代替传统xml配置文件形式进行针对框架个性化定制...基于java-based方式spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口。...在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter方法来添加自定义拦截器,消息转换器等。...简单介绍一下WebMvcConfigurer中比较重要几个方法: addInterceptors添加拦截器 addCorsMappings:跨域 addViewControllers:页面跳转(不用像现在我们要写一个

    70620

    SpringBoot拦截器和动态代理有什么区别?

    1.1 拦截器实现在 Spring Boot 中拦截器实现分为两步:创建一个普通拦截器,实现 HandlerInterceptor 接口,并重写接口中相关方法。...② 配置拦截规则然后,我们再将上面的拦截器注入到项目配置文件中,并设置相应拦截规则,具体实现代码如下:在 Spring Boot 框架执行流程中,拦截器被注册在 DispatcherServlet ...在 Spring,动态代理实现手段有以下两种:JDK 动态代理:通过反射机制生成代理对象,目标对象必须实现接口。CGLIB 动态代理:通过生成目标类子类来实现代理,不要求目标对象实现接口。...JDK 动态代理和 CGLIB 区别详见:www.javacn.site/interview/spring/jdk_cglib.html3.拦截器 VS 动态代理因此,我们可以得出结论,拦截器和动态代理虽然都是用来实现功能增强...动态代理可以使用在 Bean 中,主要用于提供 bean 代理对象,实现对 bean 方法拦截。

    37410

    Spring Boot:定制拦截器

    Servlet 过滤器属于Servlet API,和Spring关系不大。除了使用过滤器包装web请求,Spring MVC还提供HandlerInterceptor(拦截器)工具。...我们也可以增加自己定义拦截器,可以参考这篇文章中提供demo How Do 添加拦截器不仅是在WebConfiguration中定义beanSpring Boot提供了基础类WebMvcConfigurerAdapter...继承WebMvcConfigurerAdapter; 为LocaleChangeInterceptor添加@Bean定义,这仅仅是定义了一个interceptor spring bean,但是Spring...分析 在我们示例项目中,覆盖并重写了addInterceptors(InterceptorRegistory registory)方法,这是典型回调函数——利用该函数参数registry来添加自定义拦截器...在Spring Boot自动配置阶段,Spring Boot会扫描所有WebMvcConfigurer实例,并顺序调用其中回调函数,这表示:如果我们想对配置信息做逻辑上隔离,可以在Spring

    51550

    SpringBoot拦截器和动态代理有什么区别?

    1.1 拦截器实现 在 Spring Boot 中拦截器实现分为两步: 创建一个普通拦截器,实现 HandlerInterceptor 接口,并重写接口中相关方法。...1.2 拦截器实现原理 Spring Boot 拦截器是基于 Java Servlet 规范实现,通过实现 HandlerInterceptor 接口来实现拦截器功能。...CGLIB 动态代理:通过生成目标类子类来实现代理,不要求目标对象实现接口。 动态代理主要作用包括: 扩展目标对象功能:如添加日志、验证参数等。 控制目标对象访问:如进行权限控制。...JDK 动态代理和 CGLIB 区别详见:www.javacn.site/interview/spring/jdk_cglib.html 3.拦截器 VS 动态代理 因此,我们可以得出结论,拦截器和动态代理虽然都是用来实现功能增强...动态代理可以使用在 Bean 中,主要用于提供 bean 代理对象,实现对 bean 方法拦截。

    37050

    如何优雅地使用Spring Boot拦截器提升应用用户体验?

    (new MyInterceptor()).addPathPatterns("/**"); }}这种方式需要实现WebMvcConfigurer接口,并重写addInterceptors方法。...第二种方式是通过注解方式来注册拦截器,如下所示:@Configurationpublic class InterceptorConfig { @Bean public MyInterceptor...myInterceptor() { return new MyInterceptor(); } @Bean public WebMvcConfigurer webMvcConfigurer...实现原理拦截器实现依赖于Spring MVC框架中HandlerInterceptor接口。...通过本文,我们可以了解到:拦截器可以用于在请求被处理之前或之后,对请求进行相关处理;在Spring Boot中,可以通过实现HandlerInterceptor接口来实现拦截器;可以使用两种方式将拦截器注册到

    72131

    自定义SpringBoot默认MVC配置?好几个坑,这篇文章必须珍藏

    终极杀手锏WebMvcConfigurer 讲了上述两种不可行或有坑方式之后,按照剧情发展,当然该出现最终解决方案了,那就是实现WebMvcConfigurer接口。...很显然,WebMVC自动配置类中并没有WebMvcConfigurerBean是否存在限制条件。因此,并不会因为实现了该接口而导致默认配置失效。...接口方式Spring Boot自动配置并不会失效。...通常,也是建议大家通过这种形式来实现Web MVC自定义。 下面在深入分析一下为什么通过实现WebMvcConfigurer接口方式能保持保持自定义和默认配置同时生效。...() 方法来配置拦截器(实现了HandlerInterceptor接口)等。

    4.1K54

    Spring学习笔记(7)一Spring MVC拦截器

    一、什么是拦截器 Spring MVC中拦截器(Interceptor)类似于Servlet中过滤器(Filter),它主要用于拦截用户请求并作相应处理。...例如通过拦截器可以进行权限验证、记录请求信息日志、判断用户是否登录等。 要使用Spring MVC中拦截器,就需要对拦截器类进行定义和配置。通常拦截器类可以通过两种方式来定义。...以实现HandlerInterceptor接口方式为例,自定义拦截器类代码如下: public class CustomInterceptor implements HandlerInterceptor...2、springboot使用拦截器 1)、实现接口HandlerInterceptor, 使用@Component注解让spring boot识别拦截类 package com.demo.springboot2...然后在 WebConfigurer 中 addInterceptors 中注册拦截器,使其生效。

    51030

    Spring之拦截器

    一、Spring拦截器简介 Spring拦截器是一种基于AOP技术,本质也是使用一种代理技术,它主要作用于接口请求中控制器,也就是Controller。因此它可以用于对接口进行权限验证控制。...注册拦截器 创建一个Spring配置类实现WebMvcConfigurer接口,并重写addInterceptors()方法,用于将拦截器添加到程序中。...} } 测试接口 如控制台打印,preHandle()方法在Controller方法执行之前执行,postHandle()与afterCompletion()方法都在打印语句之后,那它执行顺序是什么呢...三、Spring拦截器应用案例 本节通过使用Spring拦截器实现一个简单接口数据验证功能,功能实现只需要通过在接口方法参数上添加 @NotNull 或者实体类中字段上添加 @NotNull 即可验证该字段是否为空...该对象方法也是Spring提供,不过需要我们手动注册该Bean

    46610
    领券