Google Guice 綁定2

上一章簡單介紹了,如何使用Guice框架來完成接口(父類)和具體的實現類(子類)之間的關聯。通過MyModule中:

binder.bind(Hello.class).to(HelloImpl.class).in(Singleton.class) ;

來實現關聯關係,這節介紹通過註解來實現關聯關係

(1)首先還是Hello.java接口(注意類頭上的註解,描述了這個接口要綁定的實現類)

package guice.binder;

import com.google.inject.ImplementedBy;

/**
 * 
 * @author Java_Le
 * @Date 2014-5-1下午09:38:50
 * @ClassName Hello.java
 */
@ImplementedBy(HelloImpl.class)
public interface Hello {
	
	void sayHello() ;
}
(2)Hello.java這個接口的具體實現類:HelloImpl.java(類頭上的註解,這類是單列還是動態創建)

package guice.binder;

import com.google.inject.Singleton;

/**
 * 
 * @author Java_Le
 * @Date 2014-5-1下午10:03:51
 * @ClassName HelloImpl.java
 */
@Singleton
public class HelloImpl implements Hello{

	@Override
	public void sayHello() {
		System.out.println("HelloImpl say hello");
	}
}
(3)我們的MyModule實現類(具體的綁定關係被註釋了)

package guice.binder;

import com.google.inject.Binder;
import com.google.inject.Module;

public class MyModule implements Module{

	@Override
	public void configure(Binder binder) {
		//將藉口hello.java 綁定到實現類HelloImpl.java上
		//Singleton:表示是scope是單列的,Guice中類的scope只有兩類,單例,或者每次都是new的一個新的對象
//		binder.bind(Hello.class).to(HelloImpl.class).in(Singleton.class) ;
	}

}
(4)Client測試( 這個類和上一節沒什麼變化)

package guice.binder;

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

public class Client {
	public static void main(String[] args) {
		
		Injector in = Guice.createInjector(new MyModule()) ;
		
		Hello hello = in.getInstance(Hello.class) ;//hello -->HelloImpl實例
		hello.sayHello() ;
	}
}
 輸出結果:

HelloImpl say hello

輸出的結果依然還是HelloImpl say hello,其實,Guice框架不僅可以維護接口和具體的實現類之間的綁定關係,還可以維護父類和之類之間的綁定關係,同樣的你完全可以把類的創建交給Guice框架去管理(免去了手動new的過程)。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章