WebアプリケーションでGuiceを問題なく使用しています。デスクトップアプリケーションで使用したかったのです。私は確かに一つのことを欠いている - 私のアプリにすべてを束縛する方法を教え、何が何であるかを知るための何らかの方法。 Webアプリケーションでは、Applicationクラスの宣言がありました。デスクトップアプリケーションではどうすればいいですか?Google Guiceデスクトップアプリケーション - どのように動作させるには?
public class GuiceModule extends AbstractModule
{
@Override
protected void configure()
{
// Enable per-request-thread PersistenceManager injection.
install(new PersistenceManagerFilter.GuiceModule());
// Business object bindings go here.
bind(ProjectQueries.class).to(JdoProjectQueries.class);
bind(new TypeLiteral<Repository<Project>>() { }).to(JdoProjectRepository.class);
}
私のメインクラス:ここ
は、私が使用しています関連するコードです
@Inject
public Repository<Project> projectRepo;
public void createNewProject() {
...
projectRepo.persist(newProject);
}
を私はもちろんprojectRepo.persist(newProject)に取得しています。
それで、それを機能させるには他に何が必要ですか?
EDIT:
[OK]を、その部分の仕事は今、感謝:)私が永続化がそのように動作させるためにかかわらず、もう少し行う必要があるようです。
私は今ここにNPEを取得しています:
public void persist(T entity)
{
pmProvider.get().makePersistent(entity);
}
のget()はnullを返しますここ
はインストールのように見えます(新しいPersistenceManagerFilter.GuiceModule()); で十分ではありません。私は何をする必要がありますか?私が持っている私のPMFで
public abstract class JdoRepository<T> implements Repository<T> {
private final Class<T> clazz;
private final Provider<PersistenceManager> pmProvider;
protected JdoRepository(Class<T> clazz, Provider<PersistenceManager> pmProvider) { this.clazz = clazz; this.pmProvider = pmProvider;
}
:私のリポジトリクラスで始まる
public static class GuiceModule extends AbstractModule {
@Override protected void configure() {
bind(PersistenceManager.class).toProvider(new Provider<PersistenceManager>() {
public PersistenceManager get() {
return PersistenceManagerFilter.pm.get();
}
});
}
}
これで問題は解決しました。私は少なくとももう一つ事を開始する必要があるように見えます。 ここでNPEを取得しています: public void persist(Tエンティティ) { pmProvider.get()。makePersistent(エンティティ); } – Paul
install(新しいPersistenceManagerFilter.GuiceModule())のように見えます。 で十分ではありません。私は何をする必要がありますか? 私のリポジトリクラスで始まる: パブリック抽象クラスJdoRepositoryはリポジトリ { 民間最終クラス clazzを実装します。 プライベート最終プロバイダ pmProvider; protected JdoRepository(クラス clazz、プロバイダ pmProvider) { this.clazz = clazz; this.pmProvider = pmProvider; のpublic staticクラスGuiceModuleはAbstractModule { @Override 保護されたボイドのconfigure() { バインド(PersistenceManager.class).toProvider(新しいプロバイダ() { を拡張:私は私のPMFで } –
Paul
public PersistenceManager get() { return PersistenceManagerFilter.pm.get(); } }); } } – Paul