Servlet 3.0注释与Guice结合使用

时间:2013-11-09 04:05:23

标签: annotations guice servlet-filters servlet-3.0 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);

上述绑定是否仍然必要,或者它是否会使用@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....

现在首选哪种方法?他们会互相混淆吗?

1 个答案:

答案 0 :(得分:0)

我刚刚做了快速草案,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());
      }
};

Servlet3Module扩展ServletModule并包含带scanFilters参数的package方法。此方法将扫描类路径中提供的包,并尝试通过WebFilter方法注册带注释filter()的所有类。

scan提示基于Sitebricks(由Dhanji R. Prasanna创建的guice Web框架)配置系统。

老实说,我只是做一个草稿,从不尝试它是否有效。但希望它会。如果您有任何问题或疑问,请告诉我。

PS:如果您愿意,可以添加对servlet,监听器等的支持。