obe*_*ger 6 annotations guice servlet-3.0 servlet-filters guice-servlet
我正在尝试更新遗留的Guice应用程序,我想知道在考虑Servlet 3.0注释时是否有任何一种首选的方法.例如,我的应用程序有一个过滤器FooFilter,它在Guice Module Factory方法configureServlets()中定义,如下所示:
Map<String, String> fooParams = new HashMap<String, String>();
fooParams.put("someParam", "parameter information");
filter("/foo.jsp","/foo/*").through(com.example.filter.FooFilter.class, fooParams);
Run Code Online (Sandbox Code Playgroud)
以上绑定是否仍然必要,或者它是否会使用@WebFilter Servlet 3.0注释干扰以下内容:
@Singleton
@WebFilter(
filterName="FooFilter",
urlPatterns={"/foo.jsp", "/foo/*"},
initParams = {
@WebInitParam(name="foo", value="Hello "),
@WebInitParam(name="bar", value=" World!")
})
public class FooFilter implements Filter {
etc....
Run Code Online (Sandbox Code Playgroud)
现在首选哪种方法?他们会互相混乱吗?
我刚刚快速草拟了 Servlet 3.0 支持的样子。可能有一种更优雅的方法来调用filter(Filter Class with WebFilter annotation)方法configureServlet,但这需要更新guice-servlet模块的权限,这很难分发。
好吧,我做的是 Github 上的一个项目:https ://github.com/xbaran/guice-servlet3
您所需要做的就是下载并构建。它是在 Guice 3.0 之上创建的,工作原理如下:
new Servlet3Module() {
@Override
protected void configureServlets3() {
scanFilters(FooFilter.class.getPackage());
}
};
Run Code Online (Sandbox Code Playgroud)
扩展并包含带参数Servlet3Module的方法。此方法将从类路径中扫描提供的包,并尝试通过方法使用注释注册所有类。ServletModulescanFilterspackageWebFilterfilter()
这个scan想法是基于( Dhanji R. PrasannaSitebricks创建的 guice Web 框架)配置系统。
老实说,我只是写了一个草稿,从来没有尝试过它是否有效。但希望它会。如果您有任何问题或疑问,请告诉我。
PS:如果您愿意,可以添加对 servlet、侦听器等的支持。