diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java index f4a871f091..ad20cc577c 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java @@ -241,7 +241,7 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext for (Entry filterBean : getOrderedBeansOfType(Filter.class)) { String name = filterBean.getKey(); Filter filter = filterBean.getValue(); - if (!servletRegistrations.contains(filter)) { + if (!filterRegistrations.contains(filter)) { FilterRegistrationBean registration = new FilterRegistrationBean(filter); registration.setName(name); initializers.add(registration); diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContextTests.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContextTests.java index 853f51ba9c..d7c61f696b 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContextTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContextTests.java @@ -317,6 +317,20 @@ public class EmbeddedWebApplicationContextTests { verify(servletContext, atMost(1)).addFilter(anyString(), (Filter) anyObject()); } + @Test + public void filterReegistrationBeansSkipsRegisteredFilters() throws Exception { + addEmbeddedServletContainerFactoryBean(); + Filter filter = mock(Filter.class); + FilterRegistrationBean initializer = new FilterRegistrationBean(filter); + this.context.registerBeanDefinition("initializerBean", + beanDefinition(initializer)); + this.context.registerBeanDefinition("filterBean", beanDefinition(filter)); + this.context.refresh(); + ServletContext servletContext = getEmbeddedServletContainerFactory() + .getServletContext(); + verify(servletContext, atMost(1)).addFilter(anyString(), (Filter) anyObject()); + } + @Test public void postProcessEmbeddedServletContainerFactory() throws Exception { RootBeanDefinition bd = new RootBeanDefinition( diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactoryTests.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactoryTests.java index 8efee59b81..2d389e5241 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactoryTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactoryTests.java @@ -38,6 +38,7 @@ import static org.mockito.Mockito.mock; * {@link TomcatEmbeddedServletContainer}. * * @author Phillip Webb + * @author Dave Syer */ public class TomcatEmbeddedServletContainerFactoryTests extends AbstractEmbeddedServletContainerFactoryTests {