CDI は Spring の代替として適していますか? [closed] 質問する

CDI は Spring の代替として適していますか? [closed] 質問する

私たちは Web アプリケーションをゼロから作成することを計画しており、Java EE 6 標準に準拠した Glassfish の最新版を使用することを決定したため、Spring の代わりに CDI を使用できるかどうかを分析しています。

CDI は Spring の代替になり得ると言えますか?

ベストアンサー1

2021 年更新: 最初の質問に答えてから 10 年が経ちましたが、今でも時々賛成票をいただいています。今後の読者の皆さんには、私の回答を「2011 年の Java エンタープライズの状況を反映」したものとして受け取っていただければと思います。

CDI は「コンテキストと依存性の注入」の略で、Spring は依存性注入コンテナを中心とした完全なエコシステムです。両者を比較するには、比較を区別する必要があります。

依存性注入両方のコンテナで処理されます。主な違いは、CDIがDIを動的(別名:ステートフル)方式 - これは依存関係が解決されることを意味します実行時間春のアプローチは静的- これは、コンポーネントが互いに配線されていることを意味します作成時間CDI 方式は一見すると少し変わっているように見えるかもしれませんが、はるかに優れており、はるかに多くの高度なオプションを提供します (私は 2 つの生産性の高い CDI アプリを背景にこれを書いています)。

を見てみるとエコシステム状況は異なります。春にはたくさんのCDI は jar 数 (>150) ですが、それ自体はかなり小さいです。典型的な CDI の使用は Java EE 6 アプリケーション サーバー内ですが、サーブレット エンジンや Java SE でも簡単に動作させることができます。つまり、CDI を使用する場合、Hibernate、JPA、EJB などを使用することを前提としていません。それはあなた次第です。

より多くの機能が必要な場合、CDIには次のようなコンセプトがあります。ポータブル拡張機能(これだけでも API は価値があります)。Apache CODI や Seam 3 などの独立した拡張モジュールが存在し、セキュリティ、メール、レポートなどのトピックをカバーしています。

要約すると、CDI は Spring エコシステムの「代替」ではなく、むしろ Spring の依存性注入メカニズムの改良版です。これは Java EE 6 の一部なので、Java EE 6 の GlasFish を使用している場合は、間違いなく CDI を選択する必要があります。私の見解では、あなたの質問はむしろ「Spring を Java EE 6 に置き換えることはできますか?」です。私の答えはかなり明白だと思います ;-)

見て溶接良いスタートを切るために...

おすすめ記事