static field也可以使用guice绑定,不过估计用的不多吧?
如果在Main.java中定义一个private static Service service;,可以在它上边使用@Inject,然后在Module中进行注入。
import com.google.inject.*; public class Main { @Inject private static Service service; public static void main(String[] args) { Guice.createInjector(new Module() { public void configure(Binder binder) { binder.requestStaticInjection(Main.class); } }).getInstance(Main.class); Main.service.hello(); } }
requestStaticInjection(Main.class)会加载Main.class,然后注入所有@Inject标注的static属性。后面再执行Main.service.hello(),这里的service就已经是一个ServiceImpl.class的实例了。
例子:06-01。