Guice系列之用户指南(三)

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

InstanceBindings(实例绑定):基本类型直接绑定值。

贴代码:

import com.google.inject.Inject;
import com.google.inject.name.Named;

public class Configure {
	
	String jdbcUrl;
	int loginTimeout;
	
	@Inject
	public Configure(@Named("JDBC URL") String jdbcUrl, 
			@Named("login timeout seconds") int loginTimeout) {
		this.jdbcUrl = jdbcUrl;
		this.loginTimeout = loginTimeout;
	}
	
	@Override
	public String toString() {
		return "jdbcUrl==>" + this.jdbcUrl + "\tloginTimeout==>" + this.loginTimeout + " seconds";
	}
}

import com.google.inject.AbstractModule;
import com.google.inject.name.Names;

public class ConfigureModule extends AbstractModule {

	@Override
	protected void configure() {
		bind(String.class)
	        .annotatedWith(Names.named("JDBC URL"))
	        .toInstance("jdbc:mysql://localhost/pizza");
		bind(Integer.class)
	        .annotatedWith(Names.named("login timeout seconds"))
	        .toInstance(10);		
	}

}

import com.google.inject.Guice;
import com.google.inject.Injector;

public class Test {
	public static void main(String[] args) {
		Injector injector = Guice.createInjector(new ConfigureModule());
		Configure configure = injector.getInstance(Configure.class);
		System.out.println(configure);
	}
}

执行结果:
jdbcUrl==>jdbc:mysql://localhost/pizza loginTimeout==>10 seconds

练习代码在这里

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