package com.ilucky.guice;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
* v1.0:20161114
* @author IluckySi
* 入門執行個體和單例模式
* Binder接口作用是建立接口和其實作類的映射關系.
* Module接口作用是維護一組 Bindings.
* Injector接口作用是建立對象和維護對象的生命周期.
* Guice類是建立Injector和Modules的聯系.
*/
public class MainTest {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new MyModule());
MyService myService = injector.getInstance(MyService.class);
myService.service("Hello Guice!");
//測試單例模式:binder.bind(MyService.class).to(MyServiceImpl.class).in(Scopes.SINGLETON);.
MyService myService2 = injector.getInstance(MyService.class);
System.out.println(myService.equals(myService2));//true.
}
}
package com.ilucky.guice;
import com.google.inject.Binder;
import com.google.inject.Module;
import com.google.inject.Scopes;
public class MyModule implements Module{
public void configure(Binder binder) {
//binder.bind(MyService.class).to(MyServiceImpl.class);
binder.bind(MyService.class).to(MyServiceImpl.class).in(Scopes.SINGLETON);
}
}
package com.ilucky.guice;
public interface MyService {
public void service(String service);
}
package com.ilucky.guice;
public class MyServiceImpl implements MyService {
public void service(String service) {
System.out.println("===>" + service);
}
}