我在Spring Boot应用程序(1.3.5)中定义了一个过滤器,注释如下
@WebFilter(urlPatterns = {"/api/*"}, description = "Create sessions only for API requests.")
public class SessionFilter implements Filter {
我想使用此过滤器在数据库中仅为API请求创建会话记录。但是,我也看到此过滤器也被调用/favicon.ico
请求。我也用@ServletComponentScan
注释了我的主要课程。所有类都在主类的子包下。
从日志中,我看到[/*]
正在映射到过滤器。我不明白为什么。
[2016-06-09 22:39:34] [ INFO] [ost-startStop-1] [] [o.s.b.c.embedded.FilterRegistrationBean ][configure : 271] - Mapping filter: 'com.mycompany.package.filter.SessionFilter' to urls: [/api/*]
[2016-06-09 22:39:34] [ INFO] [ost-startStop-1] [] [o.s.b.c.embedded.FilterRegistrationBean ][configure : 258] - Mapping filter: 'sessionFilter' to: [/*]
我还注册了以下内容以启用Servlet 3.0 API。
@Configuration
public class WebConfigurer implements ServletContextInitializer {
我在嵌入式tomcat中运行。
更新
当我添加filterName
参数mySessionFilter
时,日志如下所示。我还必须将@Configuration
添加到过滤器以获取此功能。
[2016-06-14 18:55:58] [ INFO] [ost-startStop-1] [] [o.s.b.c.embedded.FilterRegistrationBean ][configure : 271] - Mapping filter: 'mySessionFilter' to urls: [/api/*]
[2016-06-14 18:55:58] [ INFO] [ost-startStop-1] [] [o.s.b.c.embedded.FilterRegistrationBean ][configure : 258] - Mapping filter: 'sessionFilter' to: [/*]