問題タブ [picocontainer]
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 - PicoContainer で動的な依存関係を管理するにはどうすればよいですか?
A と B の 2 つのクラスがあり、B は A に依存しているとします。
単一の PicoContainer で B を解決するのは簡単です。
しかしB
、の変数インスタンスを使用して、セッションごとに の異なるインスタンスが必要ですA
。このようなことを考えています。
上記のコードは、 を要求するときに親コンテナーに要求するsession
ため、機能しません。 はそこにありますが、とその親内でのみ解決され、B
root
B
root
UnsatisfiableDependenciesException.
これを機能させる良い方法はありますか?それとも、これはアンチパターンであり、間違った方法で問題を解決していますか?
java - Waffle/Pico から Struts2/Guice への変換
PicoContainer を DI メカニズムとして使用して Waffle Framework で自分で開発したアプリケーションを、フレームワークとして Struts2 を使用し、DI メカニズムとして Guice を使用する新しい「スタック」に変換する作業を担当しました。痛みを最小限に抑えながら、新しいフレームワークと DI メカニズムの両方を最大限に活用する方法について、役立つ指針を持っている人はいますか?
よろしくお願いします。
java - 装飾されたオブジェクトを依存性注入フレームワーク (PicoContainer) に登録するには?
Job インターフェイスを実装するいくつかのクラスを、実行するかどうかを決定する JobEnabledDecorator オブジェクトでラップしたいと考えています。
PicoContainer でこれを構成する方法を理解するのに苦労しているので、それらをラップする JobEnabledDecorator を使用して Job 実装オブジェクトを作成することがわかります。
これは依存性注入フレームワークで可能ですか?
PicoContainerで可能ですか?
もしそうなら、助けていただければ幸いです。
java - 依存性注入のためのGoogleGuiceとPicoContainer
私のチームは依存性注入フレームワークを研究しており、Google-GuiceとPicoContainerのどちらを使用するかを決定しようとしています。
フレームワークでいくつかのものを探しています。
- 小さなコードフットプリント-小さなコードフットプリントとは、コードベースのいたるところに依存性注入コードを散らかしたくないということです。将来的にリファクタリングする必要がある場合は、可能な限り簡単にする必要があります。
- パフォーマンス-オブジェクトを作成および挿入するときに、各フレームワークにはどのくらいのオーバーヘッドがありますか?
- 使いやすさ-学習曲線は大きいですか?何かを簡単に機能させるには、コードの山を書く必要がありますか?構成をできるだけ少なくしたい。
- コミュニティの規模-コミュニティが大きいということは、通常、プロジェクトが継続して維持されることを意味します。フレームワークを使用したくないので、独自のバグを修正する必要があります;)また、途中で質問があれば、フレームワークの開発者/ユーザーコミュニティが回答できることを願っています。
リストされた基準に対する2つのフレームワークの比較は大いにありがたいです。2つを比較するのに役立つ個人的な経験も非常に役立ちます。
免責事項:私は依存性注入にかなり慣れていないので、この議論に関係のない質問をした場合は、私の初心者を許してください。
java - PicoContainerの起動順序の制御
私は、アプリケーションの起動方法に関するリファクタリング作業を任されています。基本的に、GUI アプリケーションのスタートアップ コードに依存する多数のコンソール アプリがあり、出荷する必要があるライブラリや、他のモジュールが宣言する必要のある依存関係に影響を与える偽の依存関係を引き起こします。
そこで、単純なスタートアップ フレームワークを作成しました。基本的には、一連の Runnable オブジェクトをリストに入れ、それらを順番に実行するだけで、動作します。
しかし、私は考えていました-私たちはすでにプロジェクトにPicoContainerを持っているので、起動時に実行する必要があるこれらすべてのものはPicoContainerにスローされる可能性があり、Startableを実装すると起動します...
しかし、それらの間の順序を指定したい場合もあります。たとえば、アプリケーションが起動中であることを示すヘッダーをログに書き込む前に、他のコンポーネントがログに書き込むことは望ましくありません。インジェクションの依存関係を導入することで順序付けを導入できることはわかっていますが、この場合、これはハックのように感じます。全て。
とはいえ、PicoContainerの起動順序を制御できれば良さそうなので、何か方法はないでしょうか?
または、単純にして、Runnable のリストに固執することもできます。結局のところ、それは機能します。
java - メソッドを介してオブジェクトの作成に直面するときの問題の自動配線
アプリケーションのクラスの配線にPicoContainerを使用しています。以下に示すように、すべてが完璧に進んでいますが、1 か所では次のようになります。
問題の行は
PicoContainer を使用してこの問題を回避する方法はありますか? 可能であれば、注釈なしでクラスを維持したいと思います。
ありがとう
spring - 実装主導型および依存性注入の利点と実装の維持コストの比較
すぐに構築したいアプリケーションを開始しており、後で 20 人以上の開発者によって開発されます。
複数の開発者がいる環境で DI について知っていることを踏まえて、比較的高速に構築したい新しいアプリケーションに DI を使用しますか?
現在私にとって DI を使用するコストは、すべてのオブジェクトに対してインターフェイスを使用しない場合と比べて、記述および生成されるコード行になります。そして、リフレクションのためにDIがパフォーマンスの問題にならないことを願っています。
java - PicoContainerキャッシングはスレッドセーフにできますか?
ここで何が起こっているのかを理解しようとして多くの時間を失いましたが、私はついに何かに取り掛かっていると思います。
キャッシュをオンにするだけのかなり正常なPicoContainerコードがあります。これは、シングルトンの動作をもたらすと考えられていました。
しかし、今日私たちが見つけたように、明らかに1回ではなく、4回構築されているコンポーネントがあります。これは、自分のコンピューターで再現できるものではなく、他の開発者のマシンで再現できるものです。
さらに調査したところ、複数のスレッドがPicoContainerにアクセスして同じコンポーネントを同時に検索していたことが判明し、1つのコピーをインスタンス化して他の3つのスレッドを待機させる代わりに、4つのコピーをインスタンス化したように見えます(その後それらのうちの1つだけを保持することを覚えています。)
PicoContainerで真の特異な動作を取得するための比較的簡単な方法はありますか?
java - Setting up multiple decorators with pico container
I have been using the pico container in java to do DI for a minecraft plugin framework I designed.
The plugins have event listener methods that are defined in interfaces, one method per interface.
If a particular class wants events when players join and leave the server, it implements the two particular interfaces; in this case IPlayerLoginEvent and IPlayerQuitEvent.
I then have a class in the frameworks which takes each type of event interface as a constructor injected argument.
This container class is tagged with @Listener for the craftbukkit server software to call it.
The wrapper class wraps the data craftbukkit sends in with a framework-specific class, making it possible, at least in theory, to write server-agnostic plugins.
Small example:
The plugin AwesomePlugin has a class PlayerHandler which implements IPlayerLoginEvent and IPlayerQuitEvent. The framework needs then to construct instances of each of the classes "PlayerLogin" and "PlayerQuit", passing in the PlayerHandler as a constructor argument. The PlayerLogin and PlayerQuit instances will in turn be registered with CraftBukkit as event listeners.
The way this is currently implemented using pico, can be seen here:
https://github.com/Runsafe/Framework/blob/master/src/no/runsafe/framework/event/EventEngine.java#L32
That code does look terrible and I have not been able to find a more elegant solution for this scenario, so I now beseech your guidance :)
java - Picocontainer での JSR-330 サポート: @Inject ... @Named("xxx)
次のようなコードが見つかりました
(JSR-330 アノテーションを利用して) "s" の文字列値を渡すのに非常に便利です。どのコンテナを使用するかについては、可能な限り柔軟に対応したいと考えています。そのため、Picocontainer も同様です。
書かれているように、Picocontainer は inject を黙って無視します。PicoContainer に「文字列が注入されました!」などの注入を指示するにはどうすればよいでしょうか。ここ?