0
일상적인 프로그래밍 작업에 Google Guice를 사용하기 시작했습니다. 오브젝트 그래프를 초기화하기 위해 Injector에 기존 오브젝트를 전달해야하므로 메소드 Injector#injectMembers(instance)을 사용합니다. 하지만 그것이 작동하는지 확실하지 않아 단위 테스트를 작성했지만 예상대로 작동하지 않았습니다. 내가 뭐 놓친 거 없니? 나는 Guice 3Google Guice의 InjectMembers() 메소드가 실제로 작동하지 않습니까?
public class Login_Should {
@Test
public void testName() throws Exception {
Login login = new Login();
Injector injector = Guice.createInjector(new LoginModule());
injector.injectMembers(login);
LoginWrapper caller = injector.getInstance(LoginWrapper.class);
assertEquals(login.getName(), caller.getName());
}
}
public class Login {
private int random;
public Login() {
this.random = new Random().nextInt();
}
public String getName() {
return "Mr. A" + random;
}
}
public class LoginWrapper {
private Login login;
@Inject
public LoginWrapper(Login login) {
this.login = login;
}
public String getName() {
return login.getName();
}
}
public class LoginModule extends AbstractModule{
@Override
protected void configure() {
bind(LoginWrapper.class);
}
}
이 시점에서 혼란 스러웠습니다. 당신의 대답에 감사드립니다. @Provides 주석을 사용하여이 문제를 해결할 수도 있음을 알았습니다. –