Guice系列之用户指南(一)

原文地址:https://code.google.com/p/google-guice/wiki/LinkedBindings

LinkedBindings(链接绑定):在类型上绑定它的实现。

贴代码

public interface HelloService {
	void sayHello();
}

public class HelloServiceImpl implements HelloService {

	@Override
	public void sayHello() {
		System.out.println("hello");
	}

}

import com.google.inject.AbstractModule;

public class HelloServiceModule extends AbstractModule {

	@Override
	protected void configure() {
		bind(HelloService.class).to(HelloServiceImpl.class);
//		bind(HelloServiceImpl.class).to(SubHelloServiceImpl.class);
	}

}

public class Test {
	public static void main(String[] args) {
		Injector injector = Guice.createInjector(new HelloServiceModule());
		HelloService helloService = injector.getInstance(HelloService.class);
		System.out.println(helloService.getClass().getSimpleName());
		helloService.sayHello();
	}
}

执行结果:
HelloServiceImpl
hello

还可以写成绑定链,此时再添加个子类,

public class SubHelloServiceImpl extends HelloServiceImpl {

	@Override
	public void sayHello() {
		System.out.println("sub hello");
	}

}

然后,HelloServiceModule里注释打开。

执行结果:
SubHelloServiceImpl
sub hello

在写成绑定链时,injector返回该类型最终的实现类。

练习代码在这里

此条目发表在编程语言分类目录,贴了, 标签。将固定链接加入收藏夹。