- Guice 개요
- 참고 문헌
Google Guice를 정리 합니다.
*Getting Started : https://github.com/google/guice/wiki/GettingStarted
*Java Doc : http://google.github.io/guice/api-docs/3.0/javadoc/packages.html
다운로드 :
라이선스 : [Apache 2.0](Apache 2.0.md)
플랫폼 :
Guice 개요
Google에서 발표한 Java 5 이상에서 지원되는 가벼운 DI container으로 Annotation을 사용하여 DI를 구현
'''IoC (Inversion of Control, 제어의 역전)'''
프로그램에 의해서 객체(Bean)가 관리되는 것이 아니라, 위임을 통해서 IoC Container가 객체의 생성과 생명주기를 관리
특정 작업을 위한 객체를 프로그램이 직접 생성하는 것이 아니라, IoC Container를 통해서 공급 받음
'''DL (Dependency Lookup, 의존성 검색)'''
개발자가 Container에서 제공하는 API를 사용하여 사용하고자 하는 객체(Bean)을 찾는 것
'''DI (Dependency Injection, 의존성 주입)'''
의존성 주입 방법
Constructor Injection
Setter Injection
Method Injection
{| border="1" cellspacing="0" cellpadding="2" style="width: 100%;"
|-
| style="text-align: center; background-color: rgb(241, 241, 241);" | 구분
| style="text-align: center; background-color: rgb(241, 241, 241);" | 상세
|-
| style="text-align: center;" | Construction Injection
|
public class PersonService {
private Person person;
'''@Inject'''
public PersonService(Person person) {
this.person = person;
}
}
public class PersonModule extends '''AbstractModule''' {
''' protected void configure() {
bind(Person.class).to(PersonImpl.class);
}'''
}
|-
| style="text-align: center;" | Setter Injection
|
|-
| style="text-align: center;" | Method Injection
|
|-
| style="text-align: center;" | DI 테스트
| public class PersonServiceTest {
private '''Inject''' injector = null;
@Before
public void setup() {
injector = '''Guice.createInjector(new PersonModule())''';
}
@Test
public void getPersonService() {
PersonService personService
personService = '''injector.getInstance(PersonService.class)''';
}
}
|}