关于Guice的问题。我还在学习,但我能理解基本原理。
这个问题已经在网上问过几次了,但从来没有具体的回答(我找不到)。
假设我在图片上有一个类似的情况(一个类似的例子是网络上的某个人)。
public class Dog {}
public class Walk implements Walkable {
private final Dog dog;
private final boolean leash;
@Inject
public Walk(Dog dog, @Assisted boolean leash) {
this.d
我正在进入控制反转,特别是使用Guice和RoboGuice的安卓,我有一个问题。
我有一个方法调用,它返回一个Resource (本质上是一个XML或JSON字符串)。
public Resource getResource(){
// Some implementation details that call a web service and throw the result in a string...
String resource = ........
}
Resource类实际上只是一个包装好的String,所以我认为在构造函数中传递它是有意义的,因为它是Resource对象的一
我记得guice堆栈跟踪以前是完整的,从我使用inject.getInstance(App.class)获得的对象开始。
由于某种原因,堆栈跟踪现在停止在如下提供程序方法上
@Provides
public Interface buildRemoteClient() { }
所以我有
at ClientXXX
at XXXModule.buildRemoteClient()
那就完事了?这很奇怪,因为我在我的TestModule中重写了这个方法。我看不出是谁注射了这个,因为在调用这个方法之前早就应该切断链子了。guice 4.0有什么变化吗?
更详细
at com.google.inject.
我目前正在尝试在我的resteasy解决方案中实现Guice。8个月后使用静态方法..。为了实现正确的单元测试,我不得不进行修改。我已经成功地引导了一小部分代码。我很了解DI流程。
我希望通过业务逻辑来进一步实现,但是我被困住了,我不知道如何用Guice来实现这一点。
我的应用程序为Guice构建的示例有一个单例名称Metamodel,包含一个元素映射
这是我的Metamodel
@Singleton
public class MetamodelImpl implements Metamodel{
Map<String, Element> elements;
pu
我在PlayFramework中使用Guice,但我得到运行时错误:
Caused by: com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) Could not find a suitable constructor in controllers.DirectUserController. Classes must have either one (and only one) constructor annotated with @Inject or a zero-a
关于Guice和避免非Guice单身汉,我有点进退两难。考虑一个多模块项目,其中有3个模块:shared、frontend和backend。frontend和backend都在shared模块中使用Profiling类的一个实例(该实例重复使用方法,并在整个项目中广泛使用)。
几乎每个类都需要使用这个Profiling实例(包括用户连接时动态创建的User对象)。
如果每个类都需要Profiling类的一个实例,那么不同的实现方法也有缺点:
解决方案1(在构造函数中,复制到实例字段):
private final Profiling profiling;
@Inject
public Use
我试图在Java框架(2.8.x)中为webSocket创建一个参与者。然而,当我的应用程序运行时,我得到了错误Guice/MissingImplementation]:没有绑定ActorRef<UserParentActor$Create>的实现。(本文后面提供了详细的错误消息)。
我相信这个错误是非常基本的,但是我对演员们都是新手,我很难搞清楚。
我实现的代码与这里解释的相同:-
CreationException:无法创建注入器,请参见以下错误:
1) [Guice/MissingImplementation]: No implementation for ActorR
我在一个项目中看到了几种用法,如下所示(我发布了代码的精华,以便更容易阅读):
public static void main(Strings[] args) {
Injector i = Guice.createInjector(new MyModule());
i.getInstance(Foo.class);
}
class Foo {}
class MyModule extends AbstractModule {
@Provides
public Foo getFoo(Injector injector) {
return new
在我的项目中,我在任何地方都使用依赖注入,在两种情况下我使用临时工厂。首先,当我想确切地控制何时创建实例时,我注入一个工厂而不是一个实例:
// WidgetA must be created before WidgetB, because of the side-effects
// on the container.
WidgetAFactory.make(container);
WidgetBFactory.make(container);
另一种情况是,构造函数采用可注入值和运行时值的混合。而不是使用:
@Inject
WidgetC(
Container,
@Widg
我想知道在google guice中注入实用方法是不是一种好的风格。
假设我们有一个Converter Utility Class:
public class UtilClass
{
public static Result convert(Source src)
{
//Do conversion
return result;
}
}
我的想法是使用guice将此实用程序作为Singleton注入,如下所示
@Singleton
public class UtilClass
{
public Result convert(Source src)
{
我有一个类,我需要注入一个变量,但构造函数不是guice注入的。
public class Foo{
private boolean x;
public Foo(){
//sets some variables
}
@Inject
public void setX(boolean x){
this.x=x;
}
}
X的值没有被注入。是否有必要在guice的构造函数中使用注入来识别方法注入?我是否需要从其他类调用此方法才能正常工作?提前感谢
我们使用Google Guice进行DI (主要是通过构造函数注入),使用Jackson进行与JSON之间的对象序列化。因此,我们通过Guice模块构建我们的对象图。
我们如何提供/指示Jackson使用我们预先构建的Guice Injector?或者它自己的基于我们提供的Guice模块的注入器?我更喜欢为它提供注入器,因为我们已经有了基于我们想要运行的环境/配置来控制使用哪个模块的方法。
这是一个单元测试:
public class Building {
@JsonIgnore
public final ElectricalProvider electricalProvid