Google Guice之选项注入

这一节介绍下选项注入,就是可以默认给要注入的属性绑定一个实现类,如果你在Module中没有显示的绑定其他对象的话,就会绑定你默认的实现类。

(1)首先创建一个接口Hello.java,然后创建两个实现类HelloImpl.java和HelloImpl2.java

public interface Hello{
	void sayHello() ;
}

public class HelloImpl implements Hello{
	public void sayHello(){
		System.out.println("HelloImpl say Hello!") ;
	}
}

public class HelloImpl2 implements Hello{
	public void sayHello(){
		System.out.println("HelloImpl2 say Hello!") ;
	}
}

(2)创建一个测试类

package guice.di;

import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Module;

public class OptionalDi {
	//如果Guice容器中没有给这个hello绑定对象的话,默认会绑定HelloImpl实例
	@Inject(optional=true)
	private Hello hello = new HelloImpl();
	
	public static void main(String[] args) {
		//创建一个Injector
		Injector in = Guice.createInjector(new Module(){
			@Override
			public void configure(Binder binder) {
				//如果这句不注释的话,就会调用HelloImpl2的sayHello()方法、
				//输出  HelloImpl2 say hello!
				binder.bind(Hello.class).to(HelloImpl2.class) ;
			}
		}) ;
		
		OptionalDi odi = in.getInstance(OptionalDi.class) ;
		odi.sayHe() ;
	}
	public void sayHe(){
		hello.sayHello() ;
	}
}
由于我没有注释掉Module里面的绑定关系,输出结果:

HelloImpl2 say hello!如果注释掉的话,默认会输出 HelloImpl类中定义的sayHello方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值