上一节介绍了通过@Inject来实现属性的注入,这一节来介绍静态属性的注入方式:
(1)创建接口Hello.java和它的实现类HelloImpl.java
package guice.di;
import com.google.inject.ImplementedBy;
//将这个接口和实现类HelloImpl绑定到一起
@ImplementedBy(HelloImpl.class)
public interface Hello {
void sayHello() ;
}
package guice.di;
//这里没有加@Singleton,表示是动态创建这个类,不是单例的
public class HelloImpl implements Hello{
@Override
public void sayHello() {
System.out.println("HelloImpl Say Hello");
}
}
(2)创建HelloCaller3类(包含了一个静态属性Hello)
package guice.di;
import com.google.inject.Inject;
public class HelloCaller3 {
@Inject
private static Hello hello ;
public static void sayHello(){
hello.sayHello() ;
}
}
(3)创建我们的测试类
package guice.di;
import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
public class Client3 {
public static void main(String[] args) {
Injector in = Guice.createInjector(new Module(){
@Override
public void configure(Binder binder) {
// 实现静态注入
binder.requestStaticInjection(HelloCaller3.class) ;
}
}) ;
HelloCaller3 helloCaller3 = in.getInstance(HelloCaller3.class) ;
helloCaller3.sayHello() ;
}
}
输出结果:
HelloImpl Say Hello