Google Guice-첫 번째 애플리케이션
Guice 바인딩 메커니즘을 사용하여 단계별로 종속성 주입을 시연 할 샘플 콘솔 기반 애플리케이션을 만들어 보겠습니다.
1 단계 : 인터페이스 생성
//spell checker interface
interface SpellChecker {
public void checkSpelling();
}
2 단계 : 구현 생성
//spell checker implementation
class SpellCheckerImpl implements SpellChecker {
@Override
public void checkSpelling() {
System.out.println("Inside checkSpelling." );
}
}
3 단계 : 바인딩 모듈 생성
//Binding Module
class TextEditorModule extends AbstractModule {
@Override
protected void configure() {
bind(SpellChecker.class).to(SpellCheckerImpl.class);
}
}
4 단계 : 종속성이있는 클래스 만들기
class TextEditor {
private SpellChecker spellChecker;
@Inject
public TextEditor(SpellChecker spellChecker) {
this.spellChecker = spellChecker;
}
public void makeSpellCheck(){
spellChecker.checkSpelling();
}
}
5 단계 : 인젝터 생성
Injector injector = Guice.createInjector(new TextEditorModule());
6 단계 : 종속성이 충족 된 객체를 가져옵니다.
TextEditor editor = injector.getInstance(TextEditor.class);
7 단계 : 개체를 사용합니다.
editor.makeSpellCheck();
완전한 예
GuiceTester라는 Java 클래스를 만듭니다.
GuiceTester.java
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
public class GuiceTester {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new TextEditorModule());
TextEditor editor = injector.getInstance(TextEditor.class);
editor.makeSpellCheck();
}
}
class TextEditor {
private SpellChecker spellChecker;
@Inject
public TextEditor(SpellChecker spellChecker) {
this.spellChecker = spellChecker;
}
public void makeSpellCheck(){
spellChecker.checkSpelling();
}
}
//Binding Module
class TextEditorModule extends AbstractModule {
@Override
protected void configure() {
bind(SpellChecker.class).to(SpellCheckerImpl.class);
}
}
//spell checker interface
interface SpellChecker {
public void checkSpelling();
}
//spell checker implementation
class SpellCheckerImpl implements SpellChecker {
@Override
public void checkSpelling() {
System.out.println("Inside checkSpelling." );
}
}
산출
파일을 컴파일하고 실행하면 다음 출력이 표시됩니다.
Inside checkSpelling.