Spring Boot 之FilterRegistrationBean --支持web Filter 排序的使用(转)

Spring Boot 之FilterRegistrationBean  --支持web Filter 排序的使用
Spring 提供了FilterRegistrationBean类,此类提供setOrder方法,可以为filter设置排序值,
让spring在注册web filter之前排序后再依次注册。

写一个普通的filter:

package com.sdcuike.practice.web2;

import java.io.IOException;

import javax.annotation.Resource;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.sdcuike.practice.config.CommonConfig;

public class FilterDemo3 implements Filter {
    private final Logger log = LoggerFactory.getLogger(getClass());

    @Resource
    private CommonConfig commonConfig;

    @Override
    public void destroy() {
        log.info("" + getClass() + " destroy");

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
        log.info("" + getClass() + " doFilter " + commonConfig);
        arg2.doFilter(arg0, arg1);

    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        log.info("" + getClass() + " init");

    }

}

配置如下:

package com.sdcuike.practice.web2;

import javax.servlet.Filter;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.sdcuike.spring.extend.web.MvcConfigurerAdapter;

/**
 * web 组件配置
 *
 * @author sdcuike
 *         <p>
 *         Created on 2017-02-10
 *         <p>
 *         自定义注入,并支持依赖注入,组件排序
 */
@Configuration
public class WebComponent2Config   {

    @Bean
    public FilterRegistrationBean filterDemo3Registration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(filterDemo3());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("paramName", "paramValue");
        registration.setName("filterDemo3");
        registration.setOrder(6);
        return registration;
    }

    @Bean
    public FilterRegistrationBean filterDemo4Registration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(filterDemo4());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("paramName", "paramValue");
        registration.setName("filterDemo4");
        registration.setOrder(7);
        return registration;
    }

    @Bean
    public Filter filterDemo3() {
        return new FilterDemo3();
    }

    @Bean
    public Filter filterDemo4() {
        return new FilterDemo4();
    }

}

利用这种方式,我们可以对filter排序,可自行测试,源码:

https://github.com/sdcuike/spring-boot-practice/tree/master/src/main/java/com/sdcuike/practice/web2

————————————————
版权声明:本文为CSDN博主「A_Beaver」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/doctor_who2004/article/details/56055505

原文地址:https://www.cnblogs.com/muxi0407/p/11984085.html

时间: 2024-08-01 09:42:10

Spring Boot 之FilterRegistrationBean --支持web Filter 排序的使用(转)的相关文章

使用Spring Boot来加速Java web项目的开发

使用Spring Boot来加速Java web项目的开发 我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的. 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用gradle来构建的话基本也一样)然后新建Spring相关的xml文件,而且往往那些xml文件还不会少.然后继续使用tomcat或者jetty作为容器来运行这个工程.基本上每次创建一个新的项目都是这么一个流程,而我们有时候仅仅想快速的创建一

Spring Boot 添加JSP支持【转】

Spring Boot 添加JSP支持 大体步骤: (1)            创建Maven web project: (2)            在pom.xml文件添加依赖: (3)            配置application.properties支持jsp (4)            编写测试Controller (5)          编写JSP页面 (6)          编写启动类App.Java 1,FreeMarker2,Groovy3,Thymeleaf (s

SpringBoot实战(十)之使用Spring Boot Actuator构建RESTful Web服务

一.导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.

初入spring boot(四 )web项目

1. 模板引擎 spring boot提供了大量的模板引擎,包括FreeMark.Groovy.Thymeleaf.Velocity等,但spring boot中推荐用Thymeleaf,因为Thymeleaf提供了完美的spring mvc的支持. 2. 与spring boot集成 在spring mvc中,若要集成一个模板引擎的话,需要定义ViewResolver,而ViewResolver需要定义一个View.Thymeleaf已经定义好了ViewResolver和View,分别是org

使用Spring Boot开发 “Hello World” Web应用

环境准备 由于现在很多IDE都支持Maven, 所以我们将使用Maven构建该工程: 开始之前,需要先安装Java和Maven: 本工程将基于Spring Boot 1.4.3.RELEASE开发,推荐的Java版本是Java 7+,maven版本是3.2+,可使用如下命令检查是否符合要求: 创建POM 由于使用Maven构建,所以我们首先需要创建一个pom.xml文件,用于构建本工程,打开你最喜欢的编辑器(如Notepad++),添加如下内容: <?xml version="1.0&qu

[译]Spring Boot 构建一个RESTful Web服务

翻译地址:https://spring.io/guides/gs/rest-service/ 构建一个RESTful Web服务 本指南将指导您完成使用spring创建一个“hello world”RESTful Web服务的过程. 你将会构建什么 您将构建一个将接受HTTP GET请求的服务: 您将构建一个将接受HTTP GET请求的服务: http://localhost:8080/greeting 1 1 并且使用JSON的形式进行响应: {"id":1,"conten

Spring Boot示例 - 1. 使用Spring Boot Actuator构建RESTful web service

一.概述 Spring Boot Actuator是Spring Boot的子项目.使用它无需特别配置,即可为应用增加一些生产级别的服务.本教程展示使用Eclipse + Maven来从零开始构建一个RESTful的应用. 该应用作用是访问http://localhost:8080/fuck?name=xxx,会返回json字符串,并且访问http://localhost:8080/metrics 可以看到应用堆的一些信息. 什么是Spring Boot Actuator? Actuator是个

Spring Boot 二三事:WEB 应用消息推送的那点事

阅读对象:本文适合SpringBoot 初学者及对SpringBoot感兴趣的童鞋阅读. 背景介绍:在企业级 WEB 应用开发中,为了更好的用户体验&提升响应速度,往往会将一些耗时费力的请求 (Excel导入or导出,复杂计算, etc.) 进行异步化处理. 由此带来的一个重要的问题是如何通知用户任务状态,常见的方法大致分为2类4种: HTTP Polling client pull HTTP Long-Polling client pull Server-Sent Events (SSE) s

Spring Boot . 2 -- 用Spring Boot 创建一个Java Web 应用

通过 start.spring.io 创建工程 通过 IDEA 创建工程 ??<Spring Boot In Action> 中的例子 建立一个展示阅读列表的应用.不同的用户将读过的书的数据登记进来,每次进到页面都能看到相应的读书记录. 1. 首先登录页面 start.spring.io. 页面大概长这个样子: 点击空框内的链接,会展示更全面的参数选择.[参数填好后],选择 "Generate Project" 就可以将一个完整的Spring Boot 工程下载下来了. 工