2016-06-24 17 views
0

純粋な注釈のSpring設定を使用するいくつかのアプリケーションを作成しました。今、私は図書館を建てようとします。ライブラリでの春の注釈の設定

  • ライブラリは、純粋なアノテーションスプリング構成を使用する必要があります。
  • ライブラリを使用するプロジェクトは、特別なSpring構成なしでライブラリを使用できる必要があります。実際、私は、図書館を春と非春のプロジェクトと互換性をもって使用できるようにしたいと考えています。すべてのSpring設定は、ライブラリjar内で処理する必要があります。
  • このライブラリは、Webアプリケーションではないプロジェクトで使用する必要があります。ライブラリを使用して
  • アプリケーションがnewキーワードで図書館で公共のクラスをインスタンス化することができ、そしてその@Autowired依存関係が解決されるために必要があります。

私は1つがこれをやって行くだろうかわかりません。アプリケーションコンテキストを確立する方法がいくつか必要ですが、これは挿入ポイントで行われるようです。ライブラリには挿入ポイントがないので、私は犠牲になっています。

これは行われていないことですか? Spring依存性注入は非常に便利なツールであると思われます。もしそれを使ってライブラリを構築できなければ、残念です。

答えて

2

あなたが書いたものから、あなたのライブラリは、基本的に内部的に一貫しているとMETA-INFクラスパスやMavenの依存関係の定義を介して他のライブラリに定義された明示的な依存関係を持つカスタムコンポーネントのグループ化となります。

注釈には魔法はありません。注釈は、注釈プロセッサによって処理される単純なマーカーであるため、自動配線を行うフレームワーク注釈プロセッサを使用しないと注釈はコメントに過ぎません。 JAXBまたはJPA注釈についても同様です。

あなたの非Springアプリケーションは、最初のコンテナをインスタンス化して、IoCの原則ごとの結合プロセスを開始する必要があります。あなたのライブラリの1つは、このプロセスを開始するような 'ブート'ライブラリであり、他のライブラリjarの中からBeanの設定を読み込むか、コンポーネントをスキャンするコードと、異なるライブラリのコンポーネントを自動配線することができます。

は一言で言えば、あなたは自分自身で追加された「ブート」ライブラリすることができ、起動のいくつかのフォームを、必要になります。このブートライブラリは、Spring以外のアプリケーションに対して最小限でほとんど透過的にすることができ、何らかの形式のコンポーネントルックアップを提供することができますが、完全に透過的に行うのは非常に難しいでしょう。

+0

私は非常に幅広い質問をしましたが、答えは必然的に同等に広がっていることに気付きました。私はあなたがいくつかのフォローアップの質問に気にしないことを願っています。私は、Springコンテキストを処理してパブリッククラスを処理するファサードクラスを作成することを提案しているようです。そうですか?その場合、 'new'キーワードを使用することはできません。私はちょうど誤解かもしれない。これは価値があるよりももっと難しいかもしれないように思えます。 –

+0

単純なJavaの '' 'new'''はIoCコンテナをインスタンス化しないので、BeanはマネージドBeanではありません。これをチェック:http://stackoverflow.com/a/27824238/1822278 –