나는 guice에 대한 경험이 있으며 방금 guice-persist를 시도했습니다. 하지만 지금은 아주 간단한 모듈에서 아주 이상한 오류가 발생합니다. 이 내 모듈입니다 :createInjector에 이상한 오류가 발생했습니다 "도청 할 수 없습니다"
public static VotingService getService(final String persistenceUnit) {
// initialization of dependency injection
Injector i = Guice.createInjector(new JpaPersistModule(persistenceUnit), new VotingModule());
// Starts persistence stuff (jpa is ready now)
i.getInstance(PersistService.class).start();
return i.getInstance(VotingService.class);
}
VotingService 및 구현 : 나는 서비스의 인스턴스를 얻을 수있는 공장을 (이이 API를 사용하기위한, 더 메인이되지 않습니다) 생성
public class VotingModule extends AbstractModule {
@Override
protected void configure() {
bind(VotingService.class).to(VotingServiceImpl.class);
}
}
간단한 데이터베이스 상호 작용을 캡슐화합니다. 이를 위해 "VotingServiceImpl"은 EntityManager 만 삽입하고 일부 메소드에서는 @Transactionl을 사용합니다. 그래서 내가 왜
1) Unable to method intercept: com.prodyna.nabucco.groupware.voting.core.service.impl.VotingServiceImpl
at com.prodyna.nabucco.groupware.voting.core.service.impl.VotingModule.configure(VotingModule.java:10)
? 오류는이 간단한 테스트에 발생합니다 : 바인딩 구현 @Transactional를 사용하는 경우
@Test
public void test(){
VotingService vs = VotingServiceFactory.getService();
}
편집 이 오류가 발생합니다. 무언가에 문제가 있었지만 문제를 해결하는 방법은 무엇입니까? 편집
개인 생성자를 사용할 때 – jwells131313
당신이 맞아요, 이것이 문서에 언급되어 있지 않은 것 같습니다. Guice는 클래스의 하위 클래스를 생성하므로 수퍼 클래스 생성자를 호출 할 수 있어야합니다. 생성자가 패키지 전용 인 경우 단위 테스트가 가능하다는 이점이 있습니다. –
단위 테스트에서 guice (jukito)를 사용하고 있습니다. 그래서 나는 거기에 생성자를 필요로하지 않는다. 그러나 개인을 포장하는 힌트를위한 thx. – dermoritz