1

今日春の学習を始めましたが、注釈付きの Java ファイルをコンパイルすると注釈がどうなるかについて質問があります。私がこれを尋ねている理由は、xml アプローチと注釈アプローチを使用することを選択したときに見られる根本的な違いと、私が考えるのは春の哲学のためです。私が理解している方法は、すべての Java クラスを単純な pojo にすることができ、Spring 関連のすべての構成を独立させておく必要があると言っているのです (xml ファイルのように)。

xml を使用して Spring アプリケーションを開発する場合、*.java ファイルは Spring コンテナーを認識せず、Spring 関連の依存関係なしで .class にコンパイルされます。

しかし、.java ファイルに注釈を付け、ファイルがコンパイルされると、コンパイルされたファイルにはすべてのスプリング関連の依存関係がハード ベークされ、クラスは単純な pojo ではなくなります。

これは正しいです ?ここで何かが欠けているかどうかはわかりません。

4

3 に答える 3

1

注釈は、クラスまたはその要素 (メソッド、フィールド、ローカル変数など) のメタデータと見なすことができます。注釈を付けると、動作は実装されません。要素に関する追加情報を提供するだけです。

そうすれば、Bean のインスタンス化を担当する Spring は、リフレクションを使用して情報を収集し (このサイトも参照)、それを処理できます。

結論として、Spring Bean は POJO のままであり、Spring は XML から取得した情報を注釈から取得するため、XML の方法との違いはありません (...その観点から)。

于 2013-08-20T23:05:38.530 に答える
0

私はあなたが正しいと思いますし、あなたの質問は正当だと思います。

コンパイルされたコードだけでなく、Spring jar への依存も気になります。この注釈を使用すると、結果の jar は spring ライブラリに依存します。

DDD に従ってモデルに Bean を格納することは合理的ですが、Spring はある種のインフラストラクチャ レイヤーであるため、依存関係が気に入りませんでした。

XML を使用する場合でも、属性を使用する場所が少ない場合に役立ちます。たとえば@Required、リンクされた Bean が注入されたことを確認するのに役立つ属性です。そこで、コンストラクタ依存性注入を使用してこの属性を省略することにしました。記事 を参照してください。コード内の春への依存関係を完全に除外します。

おそらく、使用したい/強制する多くの注釈のようなマインドフックを見つけることができます。

于 2013-08-21T07:09:26.973 に答える
0

実際の Bean クラスをマークせずに、構成クラスにのみアノテーションを使用できます。このようなシナリオでは、Spring を使用しない場合は、構成クラスをロードしないだけです。

于 2013-08-21T07:56:58.007 に答える