1
package
jp.co.wqf;

public
interface
DrawService
{
public void draw();
}
2
package
jp.co.wqf;

public
class
DrawServiceImpl
implements
DrawService
{

public void draw() {
System.out.println("Circle");
}

}
3
package
jp.co.wqf;

public
interface
PlayService
{
public void play();
}
4
package
jp.co.wqf;

public
class
PlayServiceImpl
implements
PlayService
{

public void play() {
System.out.println("Piano");
}

}
5
package
jp.co.wqf;

import
com.google.inject.Inject;

public
class
Client
{
private DrawService drawService;
private PlayService playService;
private String str;
@Inject
public void injectDrawService(DrawService drawService){
this.drawService = drawService;
}
@Inject
public void injectPlayService(PlayService playService){
this.playService = playService;
}
@Inject
public void injectString(String str){
this.str = str;
}
public void doAll(){
this.drawService.draw();
this.playService.play();
System.out.println(str);
}
}
6
package
jp.co.wqf;

import
com.google.inject.AbstractModule;
import
com.google.inject.Scopes;

public
class
MyModule
extends
AbstractModule
{

public void configure() {
bind(DrawService.class).to(DrawServiceImpl.class).in(Scopes.SINGLETON);
bind(PlayService.class).to(PlayServiceImpl.class).in(Scopes.SINGLETON);
bind(String.class).toInstance("hello");
}

}
7
package
jp.co.wqf;

import
org.junit.AfterClass;
import
org.junit.BeforeClass;
import
org.junit.Test;

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

public
class
ClientTest
{

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Test
public void testPrintStr() {
Injector injector = Guice.createInjector(new MyModule());
Client client = injector.getInstance(Client.class);
client.doAll();
}

}

























































6








































