我是Guice注入的新手。如何将类注入到将在静态方法中使用的静态变量中?
这是我想在 doLocalize() 方法中使用注入的变量 b 的类。
public class A {
@Inject //Trying to inject this class
private static B b;
// Private constructor to prevent initialization.
private A() {}
public static String doLocalize(String word) {
return b.localize(word);
}
}
这是我想要对其执行guice注入的模块类。
注意:我不能改变我的模块和B类,因为它来自另一个依赖项。
public class MyModule extends AbstractModule {
public void configure() {
bind(B.class);
// some other binds
}
}
我想在我的A类中注入的类
public class B {
public String localize(String word) {
//does some stuff
//returns a modified string
}
}
出于几个原因,我建议将A
上的方法设置为非静态的。
我建议:
public class A {
private final B b;
@Inject
private A(B b) {
this.b = b;
}
public String doLocalize(String word) {
return b.localize(word);
}
}
请注意,b
是final,这很好,因为您不希望它是更改,并且final字段在多线程环境中有一定的保证。
写完这篇文章后,我想知道为什么需要A
类。相反,任何代码都可以调用<code>A。doLocalize()注入B
instance?
使用 requestStaticInjection
。这在维基中有描述。
注意:我不能改变我的模块和B类,因为它来自另一个依赖项。
那么你将需要一个新的模块。
class A {
@Inject
public static B b;
static void a(){b.b();}
}
class B {
@Inject public PrintStream out;
void b() { out.println("Value: b"); }
}
class MyModule extends AbstractModule {
public void configure() {
bind(B.class);
bind(PrintStream.class).toInstance(System.out);
}
}
class AModule extends AbstractModule {
public void configure() {
requestStaticInjection(A.class);
}
}
@Test
public void test() {
Guice.createInjector(new AModule(), new MyModule()); // Can be in any order
A.a();
assertThat(A.b, is(not(nullValue())));
}
问题内容: 我想知道用google guice注入实用程序方法是否是一种好的样式。 假设我们有一个Converter Utility类: 我的想法是使用guice将这个Utility像Singleton这样注入 建议使用guice构建的应用程序采用哪种方式? 问题答案: 这取决于您的方法的性质。 如果有的话 简单 确定性的(即不依赖于其他参数) 没有副作用 不太可能改变 等等 您可以将其保留为静态
我正在努力实现DI,特别是使用guice的构造函数注入。我很难理解如何将泛型的类类型注入到构造函数中。 我的课程如下: 我可以在运行时使用guice将类的类型注入构造函数吗?简而言之,我可以使用guice注入Foo构造函数吗?
主要内容:Google Guice 方法注入 示例,输出注入是将依赖注入对象的过程。方法注入用于将值对象设置为对象的依赖项。请参阅下面的示例。 Google Guice 方法注入 示例 创建一个名为 GuiceTester 的 Java 类。 输出 编译并运行该文件,您将看到以下输出。
我是Google Guice的新手,从概念上理解依赖注入,但在尝试将其并入我的应用程序时遇到了一些问题。我的具体问题是关于单例对象的。这里有一个例子: 首先是我的模块类,它将一个沉重的单例连接接口绑定到它的实现。 现在,在我的main方法中,我实例化我的应用程序服务器并注入连接: 到目前为止一切顺利...现在,我有一些利用连接对象的DAO类,但使用静态方法检索,如下所示: 我的第一个假设是,我只需
问题内容: 我是Spring的新手,遇到了这个问题。我尝试在该方法上使用@Autowired,但没有成功,在变量上,我从Eclipse中收到错误消息“该位置不允许使用@Autowired注解”。我在xml中创建了所需的bean。 下面是代码,此方法在抽象类内。 (ps我是stackOverflow的新手,希望我正确格式化了问题:)) 问题答案: 如果有可能可以让你把和成静态属性可以通过利用注入他们
问题内容: 我正在尝试使用Guice注入通用类型。我的Repository 位于Cursor类中。 因此,当我创建Cursor 时,我还希望Guice将我的存储库注入Repository 。有没有办法做到这一点? 问题答案: 您必须使用: 要获取的实例,则需要: 在FAQ中有更多细节。