注册为 Spring bean 时过滤器调用两次

2024-03-02

我想用@Autowire with a Filter。所以我在中定义我的过滤器SecurityConfig如下:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        http.addFilterBefore(getA(), BasicAuthenticationFilter.class);
        http.csrf().disable();
    }

    @Bean
    public A getA(){
        return new A();
    }

这个过滤器A延长了春天的GenericFilterBean.

当我调用控制器时,我得到以下输出,其中显示过滤器命中两次。

filter A before
filter A before
mycontroller invoke
filter A after
filter A after

我的观察是,这个额外的调用是使用 Spring 容器调用的,因为如果过滤器没有注册为 bean,它只会被命中一次。原因是什么以及如何解决?


正如您所观察到的,Spring Boot 将自动注册任何属于Filter与 servlet 容器一起。一种选择是不暴露您的Filter作为一个 bean 并且仅将其注册到 Spring Security。

如果您希望能够将依赖项自动装配到您的Filter那么它必须是一颗豆子。这意味着您需要告诉 Spring Boot 不要将其注册为Filter. As 文档中描述 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-disable-registration-of-a-servlet-or-filter,你可以使用FilterRegistrationBean:

@Bean
public FilterRegistrationBean registration(MyFilter filter) {
    FilterRegistrationBean registration = new FilterRegistrationBean(filter);
    registration.setEnabled(false);
    return registration;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注册为 Spring bean 时过滤器调用两次 的相关文章

  • CDI 对象无法使用注入的构造函数进行代理

    当尝试将参数注入 CDI bean ApplicationScoped 的构造函数时 我遇到以下问题 Caused by org jboss weld exceptions UnproxyableResolutionException WE
  • Java 密钥库 - 以编程方式从密钥库文件中选择要使用的证书

    我有一个 java 密钥库文件 其中包含多个客户端证书 我希望在 Java 应用程序中仅选择其中一个证书来连接到服务 有没有一种简单的方法可以做到这一点 到目前为止 我找到解决方案的唯一方法是使用原始密钥库文件中的客户端证书详细信息 通过其
  • 如何在Eclipse中制作war文件[重复]

    这个问题在这里已经有答案了 制作war文件的简单方法是什么 当我右键单击 在服务器上运行 时 我的项目正在运行 但我想部署在 tomcat 服务器上 我已经安装了m2clipse但这给了我一个错误 maven是否必须制作war文件 我需要特
  • 规范路径和绝对路径有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 中的 getPath getAbsolutePath 和 getCanonicalPath 有什么区别 https stackoverflow com questions 1099300 w
  • 如何为连接表中的其他属性创建多对多 Hibernate 映射?

    我需要一个多对多的休眠映射需要 3 个连接 我试图找到一个没有中间实体的解决方案 例如LecturerCourse 我的数据库中的讲师和课程表之间存在多对多关系 一门课程可以由多名讲师讲授 而一名讲师可以讲授多门课程 我事先存储了课程 但是
  • 是否可以将 BitmapDescriptor 转换为 Bitmap?

    我需要将 BitmapDescriptor 转换为 Bitmap 我可以使用以下代码将位图转换为 BitmapDescriptor BitmapDescriptor bd BitmapDescriptorFactory fromBitmap
  • 如何使用 Selenium WebDriver 和 Java 滚动特定的 DIV?

    WebDriver 无法识别某些 WebElement WebDriver 无法找到浏览器可见区域中不可见的元素 In order to make the WebElement viewable by WebDriver We need t
  • Java RCP/SWT - Eclipse RCP 中的“Android Toast like”对话框

    有谁知道是否存在某些弹出窗口的实现 例如 Android TOAST 通知是以下内容的一部分迈林公共区 https projects eclipse org projects mylyn commons 要集成它们 请添加Mylyn Com
  • 使用 Spring Boot 和 jHipster 实现多个资源服务器的 OAuth2 SSO

    所以 我有一个 oAuth2 应用程序 它是 jHipster 应用程序 使用 mongodb 我想将 3 个资源应用程序连接到该应用程序 但它们都应共享相同的用户群 以便用户只能登录一次 有没有办法使用 jHipster 在 Spring
  • Java 线程 JavaDoc

    我编写了一个只能在特定线程上调用的方法 是否应该将标准注释或注释添加到方法的 javadoc 中来表示这一点 不知道有任何这样的标准注释 Java 并发实践 http www javaconcurrencyinpractice com 在第
  • Java Swing 组件的命名约定(前缀)

    在 Java 中使用 Swing 进行编程时 我想到的一个问题是 它是 Swing 组件的推荐还是 官方 最常用的命名约定 前缀 例如 尽管其他人可能更喜欢其他命名约定 但这就是我当前正在使用的 JTextField 的 txt JButt
  • android 中的 lang.NumberFormatException

    我有以下代码 除了在后台线程中从数据库读取一些值并使用这些值之外什么也不做 我使用 jar 绘制折线图 对于我用于每个数组值的折线图 问题是第三个我传递给绘制 LineChart 的构造函数的参数是 float float viteza S
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • 参数列表中的“...”是什么意思? doInBackground(字符串...参数)

    我不明白那个语法 尝试用谷歌搜索各种单词加上 是没有用的 它被称为varargs http java sun com j2se 1 5 0 docs guide language varargs html 这个事实应该产生更好的谷歌结果 h
  • RecyclerView:禁用焦点变化引起的滚动

    TL DR我有一个RecyclerView of EditTexts 当用户注意力集中时EditText 1并点击EditText 2 我想EditText 2获得焦点 但我不想要ReyclerView滚动 我怎样才能实现这个目标 我正在尝
  • 通过命令行增加Java中的MaxPermSize内存

    您能否解释一下如何增加此 PermSpace 大小 我正在使用 Gate 应用程序并加载大量数据和大量插件 不幸的是每次运行后都会出现有关内存不足 maxPermSpace 的错误 我到处搜索 但我找不到如何通过命令行增加这个大小 或者可能
  • 如何指示 yum 安装特定版本的 OpenJDK

    我尝试安装openjdk in the redhat服务器 如何安装指定版本 我要安装的版本是 11 0 4 使用以下命令安装的版本是11 0 6 yum install java 11 openjdk devel 曾与 yum showd
  • 术语“可序列化”是什么意思? [复制]

    这个问题在这里已经有答案了 不太确定我读过的定义可序列化实际上做了什么 import java io Serializable import java text StringCharacterIterator import java uti
  • C中使用JNI从对象获取对象

    public class Student private People people private Result result private int amount 这是 Java 中类的示例 在C中 我试图获取 学生 中的 人 但失败了
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具

随机推荐

  • 如何在android中按日期范围或月份获取日历事件

    我正在使用下面的代码在我的应用程序中获取和加载日历事件 它工作得很好 但现在我想获取指定日期范围的事件 我怎么才能得到它 Cursor cursor getContentResolver query Uri parse content co
  • c_cpp_properties.json 中的 includePath 在 C 的 VSCode 中不起作用

    我正在 Ubuntu 18 04 上使用 C C 扩展的 VSCode 进行工作 我试图包含 gmodule h 并且它引发了错误gmodule h No such file or directory主文件第 2 行第 10 个字符 因此
  • 将值的总和放在圆环图的中心?

    我正在绘制这个饼图 使用此代码 dxPieChart dataSource dsAlarmsBySeverity size width 275 height 150 palette FFFF00 FF9900 CC3300 33CC33 0
  • 在android中突出显示谷歌地图上的街道

    是否有可能在android突出显示某条街道google map当用户点击 街道 目前我正在研究一个app这将识别有停车场的街道 插槽可用 这个小提琴可以帮助 init map var myOptions mapTypeId google m
  • 如何查找在某个时候分配给您的问题?

    我们在项目中广泛使用 Jira 但我经常很难发现问题 我知道 我之前一直在解决这些问题 通常 如果报告了某些案例 这对我过去一直在做的事情来说似乎很熟悉 但我不记得具体是什么以及何时 通常 报告一个问题 然后我们的 scrum master
  • Jquery - 悬停时将图像高度和宽度扩展 20%

    晚上好 动态访问图像高度和宽度的最佳方法是什么 我想在图像宽度和高度上添加 20 并在周围的 div 悬停时设置动画 我想我需要使用 this 但不确定如何访问图像 非常感谢任何帮助 干杯保罗 你可以做这样的事情 使用 height htt
  • 防止导航栏右侧文本在导航栏中换行?

    In 这个 Bootply 示例 http www bootply com 133310 我该如何防止navbar right文本在移动视图中换行 我希望所有文本都保留在一行上 随着页面宽度的缩小而逐渐靠近 即 桌面视图中所见内容的压缩版本
  • 使用 Twitter API v2 方法时,Tweepy 不返回 url 媒体字段

    我请求 Twitter API v2 获取推文的详细信息并使用身份验证所需的客户端对象 import tweepy config client tweepy Client bearer token config BEARER TOKEN c
  • 使用 MVC 和 Razor 创建 object.cshtml 编辑器模板

    我希望为 Object cshtml 创建一个编辑器模板来更改 Html EditorForModel 方法的行为 我找不到任何使用 Razor 的示例 我见过这个例子 http bradwilson typepad com blog 20
  • Windows Azure 中的密钥管理

    我对如何在 Windows Azure 中存储密钥 用于数据加密 有点困惑 根据以下两个链接 1 http msdn microsoft com en us magazine ee291586 aspx 2 http blogs msdn
  • 使随机产生的数字更有可能

    我在用着x numpy random rand 1 生成一个 0 到 1 之间的随机数 我该如何做到这一点x gt 5的可能性是 2 倍x lt 5 这是一个合适的名字 只需对输入进行一些操作即可 第一组x在范围内0 to 1 5 x nu
  • 可以在Java中强制执行包依赖层次结构吗?

    基本上我有包 com me application com me application thing com me library 我想执行以下规则 com me application可以包括com me library 除了com me
  • jsdoc二维数组

    我有一个字符串数组的数组 但我不知道如何使用 JSDoc 来记录它 class function PostbackList type int default this TypeID 0 type PostbackList Field thi
  • Tomcat 7 SSL 失败

    我使用 Tomcat 7 并将启用 SSL 连接器 实际上我已经将此解决方案编辑为server xml file
  • QtRuby 可以与 Qt 5 一起使用吗?

    我可以在网上找到的所有内容QtRuby https duckduckgo com q ruby and qt使用 Qt 4 但当前的 Qt 版本是 5 这是否只是文档跟不上现实的问题 Qt 5 可以与 QtRuby 一起正常工作 如果您断言
  • Windows Phone 运行时没有页面转换

    我正在尝试禁用 Windows Phone 运行时的默认页面导航动画 我所能实现的就是将其更改为连续体 十字转门或幻灯片 但我希望页面能够立即更改 因此 当我调用 this Frame navigate 时 它应该导航到新页面 而无需任何动
  • 从 Windows 上下文菜单接收参数

    我以前做过这个 但我一生都不记得该怎么做 在我的资源管理器上下文菜单中 我添加了一个新条目 转到 regedit 转到 HKEY CLASSES ROOT bla bla bla 现在 当我单击我的选项时 我想传递文件路径 文件名等我的应用
  • 如何从服务 C# 捕获控制台输出?

    我们有一个部署到远程客户系统的 C 服务 应用程序将大量 诊断 信息写入控制台 即 Console WriteLine 该服务没有 做它应该做的事 我们如何捕获另一个应用程序中服务的控制台输出 WinForm 版本的应用程序可以在客户位置加
  • Gradle Jacoco 和 JUnit5

    我们刚刚将单元测试移植到 JUnit5 意识到这仍然是相当早期的采用 谷歌上几乎没有任何提示 最具挑战性的是为我们在 jenkins 上使用的 Junit5 测试获取 jacoco 代码覆盖率 因为这花了我几乎一天的时间才弄清楚 所以我想我
  • 注册为 Spring bean 时过滤器调用两次

    我想用 Autowire with a Filter 所以我在中定义我的过滤器SecurityConfig如下 Override protected void configure HttpSecurity http throws Excep