草庐IT

java - 如何在内存数据库中使用带有 play java 的注入(inject)测试

playdocumentationaboutfunctionaltestsinjava显示两种模式使用fakeApplication指定自定义配置(在示例中为内存数据库)使用依赖注入(inject)配置应用我想使用依赖注入(inject),但我必须在应用程序启动时设置自定义配置,例如使用内存数据库。我无法做到这一点。我想这必须在guicebuilder中完成,但我不知道如何做。 最佳答案 我假设您正在使用Guice进行DI。关于issue的讨论4809在框架的github存储库上应该有助于回答您的问题。我能够使用该问题的解决方案之一

java - 清理 @RequestScoped 对象?

我正在使用guice-servlet(2.0)在每个HTTP请求开始时注入(inject)一个数据库连接,但是我怎样才能知道请求何时结束以便关闭连接?web.xmlGuiceFiltercom.google.inject.servlet.GuiceFilterGuiceFilter/*GuiceServletContextListener/***CreatesanewDatabaseconnection.*/@RequestScoped@ProvidesprivateConnectiongetConnection(); 最佳答案 这

java - 注入(inject)命名的 Guice 单例

我有一个简单的POJO:publicclassMyPOJO{@InjectprivateFizzfizz;privateBuzzbuzz;//restofclassomittedforbrevity}我想配置我的Guice模块,使其注入(inject)两种类型的Fizz:一个特殊的全局单例Fizz实例;和其他(非特殊)Fizz实例我希望MyPOJO被注入(inject)特殊/单例实例。所以我修改了我的代码:publicclassMyPOJO{@Inject@Named("Special-Fizz")privateFizzfizz;privateBuzzbuzz;//restofclas

java - 注入(inject)器层次结构/子注入(inject)器解释?

我一直在网上寻找有关注入(inject)器层次结构以及如何/何时使用createChildInjector()的解释,但我找不到清晰简洁的解释。这是我的用例:我有一个基本应用程序模块,我用它来注入(inject)某些上下文项。该模块应包含在每个注入(inject)器实例中。我有一个搜索数据库的搜索模块我有一个搜索ElasticSearch的搜索模块。此类中的某些绑定(bind)应该覆盖数据库搜索模块中提供的绑定(bind)。例如,假设数据库搜索模块包含:bind(PlaceSearch.class).to(HibernatePlaceSearch.class);bind(PersonS

java - 如何初始化循环依赖(final 字段相互引用)?

你如何初始化它:classA{finalBb;A(Bb){this.b=b;}}classB{finalAa;B(Aa){this.a=a;}}DI框架、反射、更好的设计?动机和用例(已添加):我的特定用例是简化A和B子类中的字段访问。因此,我将它们注入(inject)到派生类中的字段中以快速引用它们,而无需在每个子类中显式声明。还有关于DI的建议,对象最好是不可变的:Guicebestpracticesandanti-patterns. 最佳答案 你可以使用工厂方法classA{finalBb;A(Bb){this.b=b;}}a

java - 使用 Guice 将委托(delegate)人注入(inject) RESTEasy 中的资源方法

我正在使用RESTEasy和Guice开发RESTAPI,目前我正在尝试通过使用类似于Dropwizard中的@Auth的注释来合并基本身份验证。与@Path("hello")publicclassHelloResource{@GET@Produces("application/json")publicStringhello(@AuthfinalPrincipalprincipal){returnprincipal.getUsername();}}hello资源调用应该被一些代码拦截,这些代码使用授权HTTP请求header中传递的凭据执行基本身份验证,并成功将主体注入(inject)

java - 使用 Multibinding 概括 guice 的机器人腿示例

我有一个与Guice的机器人腿示例非常相似的用例,只是我不知道我有多少条“腿”。因此我不能使用机器人腿示例所需的注释。我希望使用Guice的Multibindings扩展将所有这些“腿”收集到一个java.util.Set中。从技术上讲,在PrivateModule中,我想将一个实现直接公开为将由Multibindings扩展提供的集合的一个元素。我只是不知道该怎么做。有关引用和代码示例,请参见此处的机器人腿示例:http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions#How_do_I_build_two_

java - 使用 Guice 实现参数化工厂

我有一个我喜欢使用Guice重新实现的工厂:enumMyObjects{OBJECT1,OBJECT2,...}classObject1implementsSomeInterface{...}classObject2implementsSomeInterface{...}...classFactory{publicstaticSomeInterfacecreateObject(MyObjectsobj){switch(obj){caseOBJECT1:returnnewObject1();caseOBJECT2:returnnewObject2();...}}有没有简单的实现方法?类似

java - 如何使用 Google Guice 注入(inject)记录器

通常我这样定义记录器:privatestaticfinalLoggerlogger=LoggerFactory.getLogger(MyClass.class);但是在使用@Inject时我们必须使用非静态和非final字段,比如:@InjectprivateLoggerlogger;即记录器将在此类的每个实例中创建,记录器也是可变的。可能存在某种使记录器静态的方法?还有我如何将记录器绑定(bind)到某个类(我在从工厂LoggerFactory.getLogger(MyClass.class);创建记录器对象时使用发送类对象,如何使用注入(inject)以相同的方式创建记录器?)?

java - 通用对象列表的 Guice 绑定(bind)

我需要告诉guice我想要一个OneFoo和一个TwoFoo作为Foo列表注入(inject)Bar的绑定(bind)语句是什么?这里的设置是一个责任链。现在我有两个实现,但Bar不需要知道。@InjectBar(Listfoos){...}...classOneFooimplementsFoo{@InjectOneFoo(...){...}...classTwoFooimplementsFoo{@InjectTwoFoo(...){...}但我正在努力使用类型、TypeLiteral等来配置将两个Foo实现提供给Bar的绑定(bind)。 最佳答案