Tag: guice

如何将Jersey ExceptionMapper与Google Guice一起使用?

我正在使用Jersey Guice,需要配置自定义的ExceptionMapper 我的模块看起来像这样: public final class MyJerseyModule extends JerseyServletModule { @Override protected void configureServlets() { … filter(“/*”).through(GuiceContainer.class); … } } 这是我的ExceptionMapper : import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.ext.ExceptionMapper; public class MyExceptionMapper implements ExceptionMapper { @Override public Response toResponse(final MyException exception) { return Response.status(Status.NOT_FOUND).entity(exception.getMessage()).build(); } }

Guice渴望/懒惰的单身实例化

我有一些麻烦,了解Guice的单例实例化是如何工作的。 我已阅读了可用的文档(此处为http://code.google.com/p/google-guice/wiki/Scopes ),但我仍然无法弄清楚一些事情: 1)我已经将Guice与Tomcat集成在一起,我在ServletModule中设置了一些绑定: bind(MyServlet.class).asEagerSingleton(); serve(“myUrl”).with(MyServlet.class); serve(“myOtherUrl”).with(MyOtherServlet.class); (其中MyOtherServlet类上面有一个@Singleton注释)我的意图是有两个servlet,其中一个是急切实例化的,而另一个则没有。 然而,似乎“serve … with …”行自动实例化servlet对象,即使该类未被绑定为急切的单例。 我上面提到的链接提到了在Stage.Development和Stage.Production下运行的Guice之间的区别 – 但是即使我明确使用了Stage.Development(无论如何都是默认的),这仍然会发生。 有什么方法可以避免这种情况吗? 2)(继续1)尝试确保MyServlet首先被实例化,即使所有servlet现在急切地实例化,我在创建Injector时修改了模块(和绑定语句)的顺序,以便首先显示MyServlet的绑定。 但是,我发现它仍然比其他一些绑定(非servlet类)实例化,其forms如下: bind(MyInterface.class).to(MyClass.class).asEagerSingleton() 即使这些其他绑定在模块/绑定顺序中稍后出现。 我调查了一下,发现Guice只是实例化了那些以“bind … to … asEagerSingleton()”的forms绑定的热切单身人士,然后才进行“bind … asEagerSingleton()”,所以我通过修改行来解决它:bind(MyServlet.class).asEagerSingleton(); into:bind(MyServletDummyInterface.class).to(MyServlet.class).asEagerSingleton() 这实际上有效。 尽管如此,我宁愿避免使用虚拟接口来解决这个问题,所以我想知道是否有人有更好的解决方案..? 3)我有两个Guice模块 – 一个ServletModule和一个AbstractModule。 ServletModule configureServlets()中包含以下绑定: serve(“aUrl”).with(SomeServlet.class); AbstractModule的configure()具有以下绑定: bind(SomeImpl.class).asEagerSingleton(); bind(SomeInterface.class).to(SomeImpl.class).in(Singleton.class); 此外,SomeServlet类具有SomeInterface类型的注入字段,并且在类的顶部具有@Singleton注释。 现在,人们可以期望在创建注入器时,SomeImpl类将被实例化,并且相同的实例将被注入SomeServlet实例。 如前所述,带有“serve … with …”语句的servlet似乎也得到了热切的实例化,但无论哪种方式,都应该只有一个SomeImpl对象被实例化。 但由于某种原因,我在执行此操作时实例化了两个SomeImpl对象。 为了解决这个问题,我将configure()中的两行混合了一下,而不是上面的那些我有以下几行: bind(SomeImpl.class).in(Singleton.class) bind(SomeInterface.class).to(SomeImpl.class).asEagerSingleton(); 然后它工作正常,我只有一个实例化SomeImpl的实例。 我真的不明白为什么开关应该重要 – 我可以看到后一种方式是如何“更好”,但我希望两者都能正常工作,所以我只是想知道我是不是在这里弄错了.. ? 抱歉长度, […]

Guice:Binder#bindConstant()和Binder#bind()… toInstance之间的区别

我想问一下有什么区别 bindConstant().annotatedWith(Names.named(“keepAliveInterval”)).to(60); 和 bind(Integer.TYPE).annotatedWith(Names.named(“keepAliveInterval”)).toInstance(60); 我想用Names.bindProperties(binder(),prop)加载我的所有配置属性; 在我的模块中,我发现它使用后者来绑定属性。 感谢和问候 马雷克

在Web容器外的Java 6中使用Guice 3和JAX-WS

我们有一种情况,我们使用基于JSR-330的注入来配置我们的独立Java 6应用程序,这非常适合在所有层中获取配置参数。 我们还使用JAX-WS Web服务很长一段时间,在Web容器中使用Java 5的第一个独立Metro分发,但是使用Java 6我们只使用Endpoint类来减少占用空间。 所以现在我有一个情况 一个独立的Java 6应用程序 – 没有servlet容器(Jetty,Tomcat) Guice 3 Injector按照我喜欢的方式设置。 处理我的@javax.jws.WebService注释类的Endpoint ,它将我的方法公开为Web服务。 我希望Web服务方法要么透明地处理它们的@Inject字段,要么访问注入器。 我可以从主方法中获取它作为静态字段,但我想要一个更清洁的解决方案。 有什么建议么? (我从JAX-WS和Guice 3了解到http://jax-ws-commons.java.net/guice/模块不能与Guice 3一起使用,建议的解决方法是特定于Tomcat) JSR-250 @Resource注释在这里有用吗?

Guice Servlets的简单示例

我不知道如何处理一个简单的guice示例。 阅读完文档后,我完成了以下工作: 设置guiceFilter 创建一个注入器并在GuiceServletContextListener实例化一个新的ServletModule并将该侦听器添加到web.xml bound serve(“*.jsp”).with(IndexController.class); 在配置servlet中 在我完成之后如何使用dependency injection? 假设我有一个index.jsp,IndexController.class(s​​ervlet),以及两个名为Person和Order with Person的类,具体取决于Order。 如何通过guice将Orderdependency injection到Person构造函数中,在我这样做之后,我需要返回说这个人的命令列表回到控制器? 我在过去使用过Ninject和ASP.NET MVC,这很简单,但我对如何使用Guice实现最简单的DI示例感到很困惑。 谢谢。

使用Google Guice和静态方法注入Util类?

我想知道用google guice注入实用程序方法是否是一种好方法。 假设我们有一个转换器实用程序类: public class UtilClass { public static Result convert(Source src) { //Do conversion return result; } } 我的想法是使用guice将这个实用程序注入像这样的Singleton @Singleton public class UtilClass { public Result convert(Source src) { //Do conversion return result; } } 对于使用guice构建的应用程序,建议采用哪种方式?

Spring和Guice在一起,或者只是Spring

我从头开始创建一个新的Java Web应用程序。 我对Spring Framework没有太多经验,但我知道我想使用它的一些function,比如Transaccions Management。 另一方面,我非常喜欢Guice的dependency injection。 我知道Guice和Spring可以一起工作: http : //www.jroller.com/mindcrime/entry/an_example_of_integrating_guice 但在开始设计我的应用程序之前,我想知道是否有人通过遵循该方法遇到了问题。 另外,我真正喜欢Guice的是你不需要XML配置文件,只需要java模块,它更短,更容易阅读。 Spring上有没有XML配置文件的替代品,类似于Guice?

您使用什么技术来调试复杂的guice绑定?

我有一组复杂的绑定,包括许多私有绑定来解决机器人腿问题 。 由于Guice报告可理解的绑定错误的能力有限,我想知道除了阅读之外还有哪些有效的工具或技术,Guice的运行时exception可用于解决运行时绑定错误。 单步执行配置代码没有帮助,因为配置发生在引导时而不是通常发生错误的对象实例化时。 如果Guice图形插件有效,它可能会很有用 – 我的实验结果导致图形不正确。

如何扫描类注释?

我有一个简单的jane servlets Web应用程序,我的一些类有以下注释: @Controller @RequestMapping(name = “/blog/”) public class TestController { .. } 现在,当我的servlet应用程序启动时,我想获得所有具有@Controller注释的类的列表,然后获取@RequestMapping注释的值并将其插入字典中。 我怎样才能做到这一点? 我也使用Guice和Guava,但不确定是否有任何与注释相关的助手。

使用Google Guice注入java属性

我想使用谷歌guice在我的应用程序的所有类中提供属性。 我定义了一个模块,它加载和绑定属性文件Test.properties 。 Property1=TEST Property2=25 包com.test; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Properties; import com.google.inject.AbstractModule; import com.google.inject.name.Names; public class TestConfiguration extends AbstractModule { @Override protected void configure() { Properties properties = new Properties(); try { properties.load(new FileReader(“Test.properties”)); Names.bindProperties(binder(), properties); } catch (FileNotFoundException e) { System.out.println(“The configuration file Test.properties can not be found”); } catch […]