問題タブ [guice-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - guice 支援の注入ファクトリにおける一般的な戻り値の型の問題
これまでのところ、私は google guice 2 をうまく使っていました。guice 3.0 に移行している間、支援された注入ファクトリーに問題がありました。次のコードを想定します
インジェクターの作成中に、次の例外が発生します。
guice 2 の支援された注入クリエーターを使用すると、構成が機能します。
これまでに見つけた唯一の回避策は、ファクトリ メソッドの戻り値の型からジェネリック パラメーターを削除することです。
guice 3 がファクトリ メソッドのジェネリック パラメータを好まない理由や、支援された注入ファクトリについて私が一般的に誤解していることを知っている人はいますか? ありがとう!
maven - maven 中央リポジトリから guice3.0 アーティファクトをダウンロードする
struts2 Web アプリを guice2.0 から guice3.0 にアップグレードしようとしています。Maven jettyを使用してテストしようとしています。3.0 リリースの正しいバージョンと groupId を使用するように pom.xml を正常にアップグレードしましたが、mvn jetty:run を呼び出すと、guice-3.0-no_deps.jar をダウンロードしようとしていることがわかります。
ビルド エラーがスローされ、中央リポジトリが見つかりませんか?
Guice 拡張機能を含めないと、このエラーは発生しません。
何か案は?
ありがとう
guice - Guiceのモジュールの初期化および破棄ハンドラ?
次のリンクでは、サービス インターフェイスと start() および stop() メソッドを使用して、Guice でモジュールの初期化と破棄を処理する方法について説明します。
http://code.google.com/p/google-guice/wiki/ModulesShouldBeFastAndSideEffectFree
ドキュメントでは、サービスの作成はクライアント コードでは次のようになると説明されています。
ただし、Concrete Service クラスのサンプル実装はリストされていません。誰でも私に提供できますか?少なくとも start() と stop() に含まれるもののサンプル実装。
guice - クラスの注釈に基づいてコンストラクター引数をバインドする
インターフェイスがあります: InterfaceA。
クラスがあります: ConcreteA。
@AnnotAと@AnnotBという 2 つの注釈もあります。
私は次のバインディングを行いました:
次に、クラス ConcreteA には、 hostNameString
という引数を取るコンストラクターがあります。
以下を記述するコードが必要です。
ConcretaA が @AnnotA を使用している場合、hostName を 'localhost' の文字列値でバインドします
ConcreteA が @AnnotB を使用している場合、hostName を「externalhost」の文字列値でバインドします
これに対する解決策のアイデアはありますか?
java - 依存性注入の適切な構造 (Guice を使用)
以下に説明する構造を持つシステムの依存性注入を構築するための最良の方法について、いくつかの提案とフィードバックをお願いします。私は Guice を使用しているため、XML を多用する Spring スタイルの構成ではなく、注釈ベースの宣言を中心としたソリューションを好むでしょう。
コンストラクターを介して提供されるBall, Box, and Tube
、それぞれが に依存する一連の同様のオブジェクト を考えてみましょう。Logger
(これは重要ではないかもしれませんが、4 つのクラスはすべてたまたま、Gang-of-Four ではなくアプリケーションのシングルトンです。)
クラスは、3 つの形状オブジェクトのToyChest
作成と管理を担当します。 である形状オブジェクトを作成することを除けば、ToyChest
それ自体は に依存していません。Logger
クラスは、クラスToyChest
内のアプリケーション シングルトンとしてインスタンス化されますMain
。
で形状を構築する最良の方法について混乱していToyChest
ます。(1) 実装へのバインディングに既にアタッチされている GuiceInjector
インスタンスにアクセスする必要があるか、(2) right にアタッチされた新しいインスタンスを作成する必要があります。Module
Logger
Injector
Module
@Inject Injector injector
(1) は にフィールドを追加することによって実現されますが、実際には直接的な依存関係がないToyChest
ため、これは奇妙に感じます。インスタンス化する子の依存関係のみです。ToyChest
(2) については、適切な を渡す方法がわかりませんModule
。
私は正しい軌道に乗っていますか?これを構造化するより良い方法はありますか?
この質問への回答には、インジェクターを直接使用する代わりに a を渡すことが記載されてProvider
いますが、それがどのように機能するのかわかりません。
編集:
もっと単純な質問かもしれませんが、Guice を使用する場合、形状オブジェクトを構築する適切な場所はどこでしょうか? ToyChest
それらを使用していくつかの構成を行いますが、他の場所で構築できると思います。 ToyChest
(それらを管理するコンテナーとして) ではなくMain
、それらを構築するのに適切な場所のように思えます。
java - Guice の AssistedInject の使用方法
https://github.com/google/guice/wiki/AssistedInjectを読みましたが、 AssistedInject 引数の値を渡す方法については述べていません。inspector.getInstance() 呼び出しはどのようになりますか?
jersey - ルート以外のリクエスト パスを使用するジャージー、Guice
標準構成で Tomcat 6.0.32 の Guice 3.0 で Jersey 1.11 を使用しています。
そして、単純なリソース クラス:
それを考えると、「/ws/resource」へのアクセスはうまくいくと思います。しかし、実際にはリソースが見つかりません。問題は、リクエスト パスが正しく計算されていないことにあるようです。回避策として、パラメーターPROPERTY_FILTER_CONTEXT_PATH
を/ws
に設定しました。これにより、すべてが機能します。
したがって、私の質問は次のとおりです。
- これは本当にバグですか、それとも「機能」ですか?
- これに対する別の解決策または回避策はありますか?
参考までに、関連する可能性のある Guice のバグを 1 つ見たことがあります。別のバグにマージされているようですが、適切に修正されているかどうか疑問に思っています (リンク)
java - Guice3シングルトンがGAEプロジェクトでインスタンス化されることはありません
私はGuiceを初めて使用し、すでに立ち往生しています:)
GuiceConfig、OfyFactoryのクラスをコピーし、Motomapiaプロジェクト(参照可能)からOfyを少し変更して、サンプルとして使用しました。
GuiceServletContextListener
このように作成しました
このリスナーをweb.xmlに追加しました
OfyFactoryは次のようになります
OfyにはGuiceアノテーションがまったくありません...
そして最後に、注入されたフィールドを使用しようとしているサーブレットをテストすると、次のようになります
Ofyofyは常にnullです。注入されることはありません。また、OfyFactoryがインスタンス化されることはなく、コンストラクターが呼び出されることもないため、注入されません。
私が間違っていることを指摘していただけませんか?なぜ私のシングルトンは作成されないのですか?
どうもありがとう。
java - 依存関係の履行に使用されていないGuiceバウンドプロバイダー
プロバイダーインジェクションを使用して、事前構成されたオブジェクトをファクトリにインジェクトしようとしています。
インジェクターを使用してMyCacheFactory
インスタンスを取得すると、ログ出力が表示されず、未構成のCacheBuilder<Object, Object>
インスタンスが表示されます。私の構成はどれも適用されていません。ブレークポイントを設定すると、プロバイダーが使用されていないことが確認されます。
私はまた@Named("MyCacheBuilder")
、適切な部分に適用しようとしました:
このコードを実行しようとすると、次のようになりますCreationException
。
また、クラス宣言とコンストラクター宣言で生の型参照とジェネリック型参照のさまざまな組み合わせを試しましたが、それ以上の成功はありませんでした。
プロバイダーを作成し、自分から返されたインスタンスをバインドするだけでこれを回避できますがget()
、Guiceが私に代わってそれを行うことを期待しています(そして望んでいます)。
私の設定に微妙に(または明らかに)何か問題がありますか?
guice - Guice、TypeLiteralの注入@AssistedInjectを使用する場合
これは機能します:
Guiceは、次の場合に文字列を表すTypeLiteralを自動的に挿入します。
しかし、Assisted Injectで同じことを試みる場合:
私のモジュールは次のようになります:
モジュールのインストール中に例外が発生します:
私が注入しようとしているのは確かにTypeLiteralであり、それを削除すると汎用ファクトリが正常に機能するため、問題が発生します。
それで、私はおそらく今のところ自分の工場を転がすだけですが、これがうまくいくかどうか知りたいですか?FactoryModuleBuilderを少し異なる方法で使用することの問題ですか?