質問

上記のタイトルのように、私はPressContextを直接@autowired annnotationで注入すること、またはシングルトンスプリングBeanのApplicationContextextextawareインタフェースを実装するのを混乱させています。

どのケースがどちらを望んでいますか?ありがとう。

役に立ちましたか?

解決

実際には、両方が悪いです。どちらもあなたの申請を春の枠組みに結び付け、反転の概念全体を反転します。理想的な世界では、あなたのアプリケーションはApplicationContextがまったく管理されていることを認識してはいけません。

この原則に違反することを選択したら、それはどのようにあなたがそれをするかには関係ありません。ApplicationContextAwareは、 at ml atmlixex.html"ther">バージョン2.0 以来最小のもの。@Autowiredは新しいメカニズムですが、ほとんど同じように機能します。意味的にそれが何であるかを明確にするので、私はおそらくApplicationContextAwareで行くでしょう。

他のヒント

@sean Patrick Floydは、ApplicationContextの必要性が悪いデザインによるものです。しかし、時々あなたは他の選択肢を持っていない。そのような場合、私は@Autowiredの使用を好むので、他のすべてのプロパティを注入する方法です。そのため、MyRepositoryを注入するために@Autowiredを使用している場合は、なぜApplicationContextまたは他のスプリングBeanに使用できないのですか?

私は注釈を使えないものだけ、たとえばBeanNameaware。

シングルトンでプロトタイプを入手する必要がある場合は、メソッド射出を使用できます。基本的には、必要なオブジェクトを返す抽象メソッドを作成し、そのメソッドを呼び出すたびにPrototypeを返します。Spring Configの "lookup-method"を定義します。いくつかのリンクがあります。 http://docs.spring..io / spring / docs / 1.2.9 / reference / beans.html#beans-factory-method-expection http://java.dzone.com/articles/method-injection-spring

あなたは以降のスプリングクラスのいずれかを拡張していないので、アプリケーションは常にフレームワークから分離されています。ほとんどの場合、ApplicationContextを挿入したくないが、ApplicationContextで定義されているBeanを注入する必要があります。

最良の場合は、常に最低限のもの、そして特定の要件がない限り、これは春と非常に単純なものに固執することです。

だから

  1. scanでBeanとapplication contextを注釈してから、@Autowireを使用してそれらを上に配線します。

  2. application contextを使用してBeanの担当者を配線します(古いXMLスタイルの設定)。このアプローチで@Autowireも使用できます。

    豆のライフサイクルを制御したいときは、APIを読み、カスタマイズできますが、これらの一般設定はジョブを実行します。

    これはいくつかの例です。

    1. @autowiredアノテーション付きの春自動配線豆
    2. spring iocコンテナAPI Docs
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top