Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于非启动Spring项目,是否等效于org.springframework.boot.context.embedded.FilterRegistrationBean?_Spring_Spring Mvc_Servlet Filters_Spring Bean_Spring Session - Fatal编程技术网

对于非启动Spring项目,是否等效于org.springframework.boot.context.embedded.FilterRegistrationBean?

对于非启动Spring项目,是否等效于org.springframework.boot.context.embedded.FilterRegistrationBean?,spring,spring-mvc,servlet-filters,spring-bean,spring-session,Spring,Spring Mvc,Servlet Filters,Spring Bean,Spring Session,我正试图在Spring中实现外部会话处理,如所示。不过,我在添加正确的过滤器时遇到了一些问题。SpringBoot似乎定义了正确的bean/过滤器,但我的项目不是SpringBoot,因此它找不到FilterRegistrationBean。在Spring的非启动版本中是否有类似于这个类的东西?我也尝试过,但无法将其正确导入(看起来此文档引用的是快照版本,因此此包可能从来不是正确版本的一部分)。根据您的容器配置、web.xml或ServletContainerInitializer,您可以注册一

我正试图在Spring中实现外部会话处理,如所示。不过,我在添加正确的过滤器时遇到了一些问题。SpringBoot似乎定义了正确的bean/过滤器,但我的项目不是SpringBoot,因此它找不到
FilterRegistrationBean
。在Spring的非启动版本中是否有类似于这个类的东西?我也尝试过,但无法将其正确导入(看起来此文档引用的是快照版本,因此此包可能从来不是正确版本的一部分)。

根据您的容器配置、web.xml或
ServletContainerInitializer
,您可以注册一个筛选器并按名称引用它,对于一个
过滤器
bean,您在
应用程序上下文中声明的
是有意义的,但我仍然需要一个
过滤器
bean,这似乎有点像重新发明轮子来编写我自己的过滤器类。@JosephBlair我不明白。如果您想要自己的
过滤器
,则需要编写自己的
过滤器
。但是,由于
Filter
s是由Servlet容器管理的,因此不能让它成为Springbean。Spring的解决方案是将您的
过滤器
声明为bean,然后将
DelegatingFilterProxy
注册为Servlet
,然后将其委托给在根应用程序上下文中找到的
过滤器
bean。我链接到的javadoc解释了所有这些。我理解所有这些,但我并不真正想要“我自己的”
Filter
,我只想要
FilterRegistrationBean
,因为它已经实现了所有逻辑,而不是试图复制它在自定义创建的
Filter
类中的功能。但是,我不能使用它,因为我的项目不是Spring Boot,所以我正在寻找一个我可以使用的等价物。@JosephBlair
DelegatingFilterProxy
就是等价物。它不是被声明为bean,而是在XML(web.XML)中声明为Servlet,或者通过
WebApplicationInitializer中的
ServletContext
。@JosephBlair通常有两个上下文。根上下文由
ContextLoaderListener
加载。servlet上下文由
DispatcherServlet
加载。您的
过滤器
bean应该在根上下文中声明。这就是
DelegatingFilterProxy
将查找它的地方。