diff --git a/support/guice/src/main/java/org/apache/shiro/guice/web/GuiceShiroFilter.java b/support/guice/src/main/java/org/apache/shiro/guice/web/GuiceShiroFilter.java index ae99b2e3ba..88f9098f28 100644 --- a/support/guice/src/main/java/org/apache/shiro/guice/web/GuiceShiroFilter.java +++ b/support/guice/src/main/java/org/apache/shiro/guice/web/GuiceShiroFilter.java @@ -23,7 +23,7 @@ import org.apache.shiro.web.mgt.WebSecurityManager; import org.apache.shiro.web.servlet.AbstractShiroFilter; -import javax.inject.Inject; +import com.google.inject.Inject; /** * Shiro filter that is managed by and receives its filter chain configurations from Guice. The convenience method to diff --git a/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java b/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java index 73ffc7b28f..a7faf5d73c 100644 --- a/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java +++ b/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java @@ -29,6 +29,7 @@ import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.session.mgt.SessionManager; import org.apache.shiro.util.StringUtils; +import org.apache.shiro.web.config.ShiroFilterConfiguration; import org.apache.shiro.web.env.WebEnvironment; import org.apache.shiro.web.filter.InvalidRequestFilter; import org.apache.shiro.web.filter.PathMatchingFilter; @@ -135,6 +136,7 @@ protected final void configureShiro() { bindBeanType(TypeLiteral.get(ServletContext.class), Key.get(ServletContext.class, Names.named(NAME))); bind(Key.get(ServletContext.class, Names.named(NAME))).toInstance(this.servletContext); bindWebSecurityManager(bind(WebSecurityManager.class)); + bindShiroFilterConfiguration(bind(ShiroFilterConfiguration.class)); bindWebEnvironment(bind(WebEnvironment.class)); bind(GuiceShiroFilter.class).asEagerSingleton(); expose(GuiceShiroFilter.class); @@ -246,6 +248,17 @@ protected void bindWebSecurityManager(AnnotatedBindingBuilder + * By default, a {@link ShiroFilterConfiguration} is bound as an eager singleton. + * + * @param bind + */ + protected void bindShiroFilterConfiguration(AnnotatedBindingBuilder bind) { + bind.asEagerSingleton(); + } + /** * Binds the session manager. Override this method in order to provide your own session manager binding. *

diff --git a/support/guice/src/main/java/org/apache/shiro/guice/web/WebGuiceEnvironment.java b/support/guice/src/main/java/org/apache/shiro/guice/web/WebGuiceEnvironment.java index a169915482..1bd2cc9559 100644 --- a/support/guice/src/main/java/org/apache/shiro/guice/web/WebGuiceEnvironment.java +++ b/support/guice/src/main/java/org/apache/shiro/guice/web/WebGuiceEnvironment.java @@ -27,7 +27,7 @@ import org.apache.shiro.web.filter.mgt.FilterChainResolver; import org.apache.shiro.web.mgt.WebSecurityManager; -import javax.inject.Named; +import com.google.inject.name.Named; import javax.servlet.ServletContext; @Singleton diff --git a/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java b/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java index c24359a4f4..400208fcf3 100644 --- a/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java +++ b/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java @@ -18,10 +18,12 @@ */ package org.apache.shiro.guice.web; +import com.google.inject.Binder; import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Key; +import com.google.inject.name.Named; import com.google.inject.Provides; import com.google.inject.binder.AnnotatedBindingBuilder; import com.google.inject.name.Names; @@ -47,7 +49,6 @@ import org.junit.Assume; import org.junit.Test; -import javax.inject.Named; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -432,7 +433,7 @@ public void testChangeInvalidFilterConfig() { expect(request.getAttribute("javax.servlet.include.servlet_path")).andReturn("/test/foobar"); replay(servletContext, request); - Injector injector = Guice.createInjector(new ShiroWebModule(servletContext) { + Injector injector = Guice.createInjector(Binder::requireExplicitBindings, new ShiroWebModule(servletContext) { @Override protected void configureShiroWeb() {