Open xie233 opened 5 years ago
上面只是制定了一个接口的实现类,要使用多个实现类的话不就乱了吗..
class ConfigModule extends AbstractModule{
@Override
protected void configure() {
bind(IPrinter.class).annotatedWith(Names.named("cool")).to(CoolPrinter.class);
bind(IPrinter.class).annotatedWith(Names.named("simple")).to(SimplePrinter.class);
}
}//加入命名空间
@Singleton
public class Ex1 {
@Inject
@Named("simple")//想用哪个用哪个
private IPrinter printer;
public void hello() {
printer.print();
}
public static void main(String[] args) {
Injector injector = Guice.createInjector(new ConfigModule());
Ex1 sample = injector.getInstance(Ex1.class);
sample.hello();
}
}
//output: Simple
要是想要好好安排实现类可以使用Set,Map将其统一管理也是挺方便,引入Maven依赖
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-multibindings</artifactId>
<version>4.0</version>
</dependency>
相比于spring的庞大,Guice是一个小巧的依赖注入框架,可以在自己的项目中使用。引入Maven依赖