Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自Spring框架的类Guice解决方案_Java_Spring_Guice - Fatal编程技术网

Java 来自Spring框架的类Guice解决方案

Java 来自Spring框架的类Guice解决方案,java,spring,guice,Java,Spring,Guice,下面是一个典型的GUI“绑定”,它是在没有XML的情况下配置的: ServeModule.java public class ServeModule extends ServletModule { public ServeModule() { } @Override protected void configureServlets() { filter("/*").through(ShiroFilter.class); serve(

下面是一个典型的GUI“绑定”,它是在没有XML的情况下配置的:

ServeModule.java

public class ServeModule extends ServletModule {
    public ServeModule() {
    }
    @Override
    protected void configureServlets() {
        filter("/*").through(ShiroFilter.class);
        serve(userBaseUrl + "/ajaxLogin").with(LoginServlet.class);
    }

}
public class ServeLogic extends AbstractModule {
    public ServeLogic() {
    }

    @Override
    protected void configure() {
        bind(IOAuthProviderInfo.class).to(FacebookAuth.class);
        bind(CreateDoc.class).toInstance(createDoc());
        bind(ShiroFilter.class).in(Scopes.SINGLETON);
    }
}
ServeLogic.java

public class ServeModule extends ServletModule {
    public ServeModule() {
    }
    @Override
    protected void configureServlets() {
        filter("/*").through(ShiroFilter.class);
        serve(userBaseUrl + "/ajaxLogin").with(LoginServlet.class);
    }

}
public class ServeLogic extends AbstractModule {
    public ServeLogic() {
    }

    @Override
    protected void configure() {
        bind(IOAuthProviderInfo.class).to(FacebookAuth.class);
        bind(CreateDoc.class).toInstance(createDoc());
        bind(ShiroFilter.class).in(Scopes.SINGLETON);
    }
}
吸引人的是,应用程序只需要在web.xml中定义
com.google.inject.servlet.GuiceFilter
,需要托管的每个servlet都是用java配置的

我的问题是,Spring框架是否有类似的功能


也就是说,如果我使用Spring框架,如何实现这一点?

实际上,您已经通过java绑定了servlet和过滤器。
service(url…
方法将servlet绑定到特定的url,并
filter(url…)
方法将过滤器绑定到特定的url

通过wmb.xml(xml方式)只需绑定
GuiceFilter
()和
ContextListener
()。然后,您需要通过实现
GuiceServletContextListener.getInjector
方法来引导Guice注入器。您将在那里安装
ServeModule
ServeLogic
。它将如下所示:

public class MyGuiceServletConfig extends GuiceServletContextListener {

  @Override
  protected Injector getInjector() {
    return Guice.createInjector(new ServeModule(), new ServeLogic());
  }
}
web.xml

  <filter>
    <filter-name>guiceFilter</filter-name>
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>guiceFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>com.example.MyGuiceServletConfig</listener-class>
  </listener>

guiceFilter
com.google.inject.servlet.GuiceFilter
guiceFilter
/*
com.example.MyGuiceServletConfig

实际上,您已经通过java绑定了servlet和过滤器。
service(url…
方法将servlet绑定到特定的url,并
filter(url…)
方法将过滤器绑定到特定的url

通过wmb.xml(xml方式)只需绑定
GuiceFilter
()和
ContextListener
()。然后,您需要通过实现
GuiceServletContextListener.getInjector
方法来引导Guice注入器。您将在那里安装
ServeModule
ServeLogic
。它将如下所示:

public class MyGuiceServletConfig extends GuiceServletContextListener {

  @Override
  protected Injector getInjector() {
    return Guice.createInjector(new ServeModule(), new ServeLogic());
  }
}
web.xml

  <filter>
    <filter-name>guiceFilter</filter-name>
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>guiceFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>com.example.MyGuiceServletConfig</listener-class>
  </listener>

guiceFilter
com.google.inject.servlet.GuiceFilter
guiceFilter
/*
com.example.MyGuiceServletConfig

是的,从3.1版开始,可以在Spring中配置不带xml的servlet。 看看下面的例子

您必须像这样实现
WebApplicationInitializer
(文档中的示例):


是的,从3.1版开始,可以在Spring中配置不带xml的servlet。 看看下面的例子

您必须像这样实现
WebApplicationInitializer
(文档中的示例):


嗨,xybrek,我没听清你的问题。你能再多写一点吗?你打算干什么?什么是不清楚的?什么意思是“spring有类似的功能?”MilanBaran通过Java绑定“servlet”的方法不是用XMLHi xybrek,我不明白你的问题。你能多写一点你的意图吗?什么不清楚?什么意思是“spring有类似的功能?”MilanBaran绑定“servlet”的方法实际上,我的问题是,是否有一种方法可以使用Spring框架进行类似Guice的servlet映射?不,Guice应该能够绑定SpringBeans servlet,但我从未尝试过。使用该配置xml。圭斯没有这样的事。您必须认识到Guice是一个轻量级DI框架,而不是EE堆栈。因此,我建议您创建一个xml配置文件来满足您的需求,然后创建一个模块并在任何地方重用它。这不是太多的工作。我不是想把Guice和Spring结合起来,实际上我想要的是一种类似的“技术”,也就是说,我想用Spring代替Guice,但我希望使用Spring框架实现类似的基于Java的servet映射,而不是Guice。实际上,我的问题是,是否有办法使用Spring框架实现类似Guice的servlet映射?不,Guice应该能够绑定Spring beans servlet,但我从未尝试过。使用该配置xml。圭斯没有这样的事。您必须认识到Guice是一个轻量级DI框架,而不是EE堆栈。因此,我建议您创建一个xml配置文件来满足您的需求,然后创建一个模块并在任何地方重用它。这并不是很多工作,我并没有尝试将Guice和Spring结合起来,实际上我想要的是一种类似的“技术”,也就是说,我想使用Spring而不是Guice,但我想使用Spring框架而不是Guice来实现类似的基于Java的servet映射