spring常用注解(10)@Order

一、

1、作用

加@Order()注解,在注解中加入数字,数字越小,优先级越高,最先执行。

2、使用方法

(1)自定义顺序

复制代码
@Component
@Order(1)
public class XxxFilter extends OncePerRequestFilter{}
 
@Component
@Order(2)
public class Xxx1Filter extends OncePerRequestFilter{}

(2)使用枚举

1)HIGHEST_PRECEDENCE

代表这个过滤器在众多过滤器中级别最高,也就是过滤的时候最先执行,这时执行的顺序为:

2)LOWEST_PRECEDENCE

表示级别最低,最后执行过滤操作

3、和配置文件的优先级问题

filter的执行顺序除了可以用上面的@Order注解外,还可以通过配置文件设置,这时配置文件设置的优先级--》注解设置的优先级。如我两个filter都设置为Ordered.HIGHEST_PRECEDENCE + 1,其中一个在配置文件设置的,另外一个通过注解设置的,这时配置文件设置的那个会先执行。

复制代码
package com.demo.security.config;
 
import com.demo.security.filter.UrlTwoFilter;
import com.demo.security.interceptor.ParamInterceptor;
import com.demo.security.interceptor.ParamOneInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
import java.util.List;
 
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
 
    @Autowired
    private ParamInterceptor paramInterceptor;
 
    @Autowired
    private ParamOneInterceptor paramOneInterceptor;
 
 
    @Autowired
    private UrlTwoFilter twoFilter;
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(paramOneInterceptor);
        registry.addInterceptor(paramInterceptor).addPathPatterns("/**");
        //registry.addInterceptor(paramOneInterceptor);
    }
 
    @Bean
    public FilterRegistrationBean<UrlTwoFilter> getIpFilter() {
        FilterRegistrationBean<UrlTwoFilter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(twoFilter);
        registrationBean.setEnabled(true);
        registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
        registrationBean.setUrlPatterns(List.of("/*"));
        return registrationBean;
    }
}

@Component
@Slf4j
//@Order(1)
@Order(Ordered.HIGHEST_PRECEDENCE+1)
public class UrlOneFilter extends OncePerRequestFilter
相关推荐
脚本自动化开发3 小时前
折叠双屏MU156LA:写稿修图游戏体验
后端
脚本自动化开发3 小时前
AI短剧800集讲规矩,观众忘了是AI
后端
Csvn5 小时前
安装、升级与目录结构
后端·nginx
皮皮林5515 小时前
万能通用!权限系统就该这么设计
后端
2601_962106646 小时前
【Java Set综合实战】商品管理系统 + 图书收藏系统|Product、Book自定义类全套代码
java
RuoyiOffice7 小时前
SpringBoot+Vue3 凭证生命周期设计:审核、过账、冲销与反过账怎样保持账目一致
java·spring boot·事务·springboot3·财务系统·会计凭证·ruoyi office
GoAI7 小时前
DeepSeek Harness Memory (一)主流记忆插件总结
后端·算法·面试
2601_962106647 小时前
HashMap入门|工号-姓名键值存储、两种遍历方式、根据key/value查
java
橙子家7 小时前
RESTful 接口:它并非标准或协议,而是一种【架构风格】
后端
杨凯凡7 小时前
Spring Framework 7 API 版本管理实战:请求头路由、兼容迁移与废弃策略
java·rest api·springframework·spring boot 4·api版本管理