私はguiceの経験があり、guice-persistを試しました。しかし、非常に単純なモジュールで非常に奇妙なエラーが発生しました。これは私のモジュールです:
public class VotingModule extends AbstractModule {
@Override
protected void configure() {
bind(VotingService.class).to(VotingServiceImpl.class);
}
}
サービスのインスタンスを取得するために、ファクトリを作成しました (これはこの API を使用するためのもので、メインはありません)。
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 とその実装は、単純なデータベースの対話をカプセル化します。この「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)
? この単純なテストでエラーがスローされます。
@Test
public void test(){
VotingService vs = VotingServiceFactory.getService();
}
編集 このエラーは、バインドされた実装で @Transactional が使用されている場合にのみ発生します。AOP で問題が発生しましたが、どうすれば修正できますか? 編集