27.4.1 Servlets、Filters和listeners
使用内嵌servlet容器时,你可以通过使用Spring beans或扫描Servlet组件的方式注册servlets,filters及特定Servlet相关的所有listeners(比如HttpSessionListener
)。
将Servlet、Filter和listener注册为Spring bean
所有Servlet
,Filter
或servlet *Listener
实例,只要是Spring bean,都会注册到内嵌容器中。如果想在配置期间引用application.properties
的属性,这是非常方便的。默认情况下,如果上下文只包含单个Servlet,那它将被映射到/
。如果存在多个servlet beans,那么bean的名称将被用作路径的前缀,过滤器将映射到/*
。
如果基于约定(convention-based)的映射不够灵活,你可以使用ServletRegistrationBean
,FilterRegistrationBean
,ServletListenerRegistrationBean
实现完全的控制。
Spring Boot带有许多的自动配置。它们可能定义Filter bean。这里有一些Filter以及它们的顺序的例子(低位意味着更高的优先级)。
Servlet Filter | Order |
|
|
|
|
|
|
|
|
无序的Filter bean通常是安全的。
如果需要一个特定的顺序,你应当避免配置一个在Ordered.HIGHEST_PRECEDENCE
上读取请求体的Filter。因为它可能违反你的应用的字符编码配置。如果一个Servlet filter包裹请求,它应当被配置一个顺序。此顺序不高于FilterRegistrationBean.REQUEST_WRAPPER_FILTER_MAX_ORDER
。
最后更新于