[解決済み] Xml設定とアノテーションベースの設定 [終了しました]。
質問
私が最近取り組んでいるいくつかの大きなプロジェクトでは、どちらか一方(XMLまたはアノテーション)を選択することがますます重要になってきているようです。プロジェクトが大きくなるにつれて、一貫性は保守性のために非常に重要です。
私の質問は、アノテーションベースの設定に対する XML ベースの設定の利点は何か、XML ベースの設定に対するアノテーションベースの設定の利点は何かということです。
どのように解決するのですか?
アノテーションには使い道がありますが、XMLの設定を殺すための1つの銀の弾丸ではありません。 私はこの2つを混ぜることをお勧めします!
例えば、Springを使用する場合、アプリケーションの依存性注入の部分にXMLを使用することは全く直感的なことです。 これとは対照的に、依存関係を必要とするコードで何らかの注釈を使用すると、コードはこの自動構成を認識するようになります。
しかし、トランザクション管理のためにXMLを使用する代わりに、アノテーションでメソッドをトランザクションとしてマークすることは、プログラマーがおそらく知りたいと思う情報であるため、完全に理にかなっています。 なぜなら、SubtypeX を注入したい場合、コードを変更しなければなりませんが、以前はインターフェイス契約を持っていたので、XML では XML マッピングを変更する必要があるだけで、そうするのはかなり迅速で苦痛ではありません。
私はJPAアノテーションを使ったことがないので、その良さは分かりませんが、BeanとデータベースのマッピングをXMLに残すことも良いことだと思います。 しかし、もしあなたがJPAを好きなら(私は経験がありませんが)、ぜひ、それをやってください。
一般論として。 アノテーションが機能を提供し、それ自体がコメントとして機能し、このアノテーションなしで正常に機能するためにコードを特定のプロセスに縛り付けないのであれば、アノテーションを利用することをお勧めします。 たとえば、トランザクションとマークされたメソッドは、その動作ロジックを殺すことはなく、同様に良いコードレベルのコメントとして機能します。 それ以外の場合、この情報はおそらくXMLとして表現するのが最善です。なぜなら、最終的にコードがどのように動作するかに影響を与えるものの、コードの主要な機能を変更しないため、ソースファイルには属さないからです。
関連
-
プロローグでのコンテンツは禁止されています
-
自動配線された依存性のインジェクションに失敗しました。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] XMLの<![CDATA[]]>は何を意味するのですか?
-
[解決済み] XMLを解析して、特定のノード属性のインスタンスをカウントするには?
-
[解決済み] Transactionalアノテーションはどこに属しますか?
-
[解決済み] Javaの@Overrideアノテーションはいつ使うのか、なぜ使うのか?
-
[解決済み】Mavenの親POMとモジュールPOMの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
javaで非静的な解を静的な参照にすることができない
-
プロローグでのコンテンツは禁止されています
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
Error: java.lang.NoClassDefFoundError: クラス XXXX を初期化できませんでした
-
HttpClientがGZIP形式でない場合の対処法
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
ローカルリソースのロードが許可されていない場合の解決策
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決