Java Spring引导将筛选器映射到/*即使在使用带有url模式的@WebFilter时也是如此

Java Spring引导将筛选器映射到/*即使在使用带有url模式的@WebFilter时也是如此,java,spring,spring-mvc,web-applications,spring-boot,Java,Spring,Spring Mvc,Web Applications,Spring Boot,我在Spring Boot应用程序(1.3.5)中定义了一个过滤器,并注释如下 @WebFilter(urlPatterns = {"/api/*"}, description = "Create sessions only for API requests.") public class SessionFilter implements Filter { 我想使用此筛选器在数据库中仅为API请求创建会话记录。然而,我看到这个过滤器也被调用以请求/favicon.ico。我还用@Servlet

我在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: [/*]
我还注册了以下内容以启用Servlet3.0API

@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: [/*]

可能是因为注释ServletComponentScan?请删除它,然后再试一次,让我知道结果。@Geminieth你是说我应该将其全部删除?起初我没有,但仍然面临同样的问题。我将注释移到了Filter类,但仍然存在相同的问题。我们是否可以在
WebFilter
中排除特定的模式,例如
/*.ico
?我的意思是,如果我们使用传统的web war项目,我们可以排除web.xml中的资源。我不想这样做,因为这将是一个庞大的列表,很难保持最新。我只想在发出API请求时运行此SessionFilter。您是否也有筛选器的bean定义,因为它看起来像是检测到
@WebFilter
一个,并通过
@bean
方法手动配置一个。这可能是因为annotation ServletComponentScan吗?请删除它,然后再试一次,让我知道结果。@Geminieth你是说我应该将其全部删除?起初我没有,但仍然面临同样的问题。我将注释移到了Filter类,但仍然存在相同的问题。我们是否可以在
WebFilter
中排除特定的模式,例如
/*.ico
?我的意思是,如果我们使用传统的web war项目,我们可以排除web.xml中的资源。我不想这样做,因为这将是一个庞大的列表,很难保持最新。我只想在发出API请求时运行此SessionFilter。您是否也有筛选器的bean定义,因为它看起来像是检测到
@WebFilter
一个,并通过
@bean
方法手动配置一个。