我有一个网络应用程序有一些奇怪的行为,我无法真正理解。我的问题的核心是我的其余端点返回的值中存在不一致的行为。当我启动我的应用程序时,每次我调用此端点时,我的查询都会返回相同的值。当我更新一个实体时,我的实体管理器开始表现异常。现在我的查询开始返回不同的结果。有一次它返回旧值而不是数据库中的值,或者我的结果列表包含代理而不是对象(混合)。我已验证我的@transaction方法放置正确,并且在我的调试堆栈中我看到事务拦截器和实体管理器是根据对后端的请求创建的(因此没有guice持久性过滤器)我的感觉表明问题出在session上下文中。我有一种感觉(但我无法真正理解)它在多个请求中重用了
我在GoogleAppEngine1.6.4上使用Guice3。今天,我在启动时看到了一些不好的东西。我的应用程序(本地启动)需要12秒才能启动。我有一个ServletModule,我在其中用configureServlets方法编写所有绑定(bind)。当我将此方法留空时,我的应用程序需要3秒才能启动。此方法包含约30个绑定(bind)、3个MultiBinder和1个mapBinder...这是正常的开始时间吗?(~9秒)如何分析Guice处理?(日志等)是否有一些好的做法来优化Guice启动?谢谢! 最佳答案 切换到Googl
我的项目正在使用Guice作为负责为大型对象图(主要是单例)提供依赖项(服务类)的IOC容器。有时,如果在构造过程中依赖项失败,并且许多对象都需要此依赖项,则失败将一遍又一遍地发生,并将异常添加到GuiceProvisionException中。我能理解这种行为的合理性,因为它列出了所有发生的错误,以节省修复问题的时间。但是,我想禁用此功能和“快速失败”,因为在这种情况下反复失败是资源密集型的。此外,“ProvisionException”包含相同异常的列表。我很欣赏这种行为是实现中不良实践(即资源密集型对象创建)的症状(气味),但由于依赖项是抽象的,任何人都可以使用依赖项注入(inj
我正在尝试使用Jersey和GoogleGuice3.0将2个不同的URL模式映射到同一个servlet,并将这些URL模式中的每一个应用于我项目中的不同包。为了清楚起见,我在下面粘贴了部分代码,我也会进行解释。web.xmlcom.abc.web.listeners.GuiceContextListenerguiceFiltercom.google.inject.servlet.GuiceFilterguiceFilter/*GuiceContextListenerpublicfinalclassGuiceContextListenerextendsGuiceServletConte
我目前有一个命令行工具,它大量使用了Guice及其扩展。完成该工具的功能后,我确定性能不合标准,并开始使用简单的hprof进行分析。这已经指出,仅仅创建Injector是一个重大的性能问题。我通常避免在模块中做任何实际工作,并为提供者保留计算密集型工作......鉴于此,Guice的一般性能指南是什么?我应该避免使用@AssistedInject和FactoryModuleBuilders吗?尽可能避免@Singletons?确保所有绑定(bind)都是显式的并避免JIT绑定(bind)?我到处搜索,但除了有人说它真的很快之外,我找不到太多关于基本Guice性能的内容。
我目前正在研究Guice,它似乎适合通过模块以明确的编程方式构建上下文。现在我已经相当习惯使用注解将某些内容放入上下文并使用类路径扫描来构建上下文。现在我可以很容易地将这个“功能”添加到guice中,但我不想重新发明轮子,所以如果有人知道是否有扩展已经做到了这一点-请告诉我。但是,我的问题是,这样做是否会破坏Guice的预期用途和设计...我是否错过了企业应用程序中如何/为什么要使用Guice的要点? 最佳答案 Guice有一些非常聪明的东西JITbinding如果不需要实际的绑定(bind)(例如接口(interface)到实现等
在我的Guice模块中,我想关联FXML文件及其Controller,目前它看起来像这样:publicclassGuiceModuleextendsAbstractModule{@Overrideprotectedvoidconfigure(){//associatecontrollersandfxmlfilesbind(MainController.class).toInstance((MainController)loadController("/main.fxml"));bind(SubController.class).toInstance((SubController)loa
我有一个使用vanillaGuice的基于Guice的项目;没有Assisted-Inject,没有AOP,没有扩展Guice的额外插件,等等。为了在Android上更轻松地运行它,Dagger似乎是一个更好的解决方案。每个类都有一个依赖项和一个带有@Inject注释的构造函数。没有使用字段或方法注入(inject)。这些模块非常简单(使Guice变得矫枉过正)并且主要包含如下绑定(bind):classSomethingModuleextendsAbstractModule{protectedvoidconfigure(){Bind(Handler.class).annotatedW
我正在尝试将GoogleGuice集成到AWSLambda中,但由于某些原因,注入(inject)效果不佳。每当我尝试打电话时它都会给我null处理程序代码:publicclassFirstLamdbaimplementsRequestHandler{privateUserServiceuserService;@InjectpublicvoidseUserService(UserServiceuserService){this.userService=userService;}publicObjecthandleRequest(Requestrequest,Contextcontext
我有一些使用工厂的示例代码。我想通过删除工厂并改用Guice来清理代码。我试图这样做,但遇到了一个小障碍。我是Guice的新手,所以我希望有人能帮助我。现有客户端代码(使用工厂):publicclassMailClient{publicstaticvoidmain(String[]args){MailConfigconfig=MailConfigFactory.get();config.setHost("smtp.gmail.com");Mailmail=MailFactory.get(config);mail.send();}}我尝试使用Guice进行重构://Replacesexi