web-dev-qa-db-ja.com

Spring vs EJB(利点と欠点)

現在、最終的なプロジェクト研究を準備しています。人的資源を管理するための分散アプリケーションを開発する必要がありますが、使用するテクノロジーのベンチマークでは、SpringとEJB 3.1のどちらを選択するかがわかりにくいことがわかりました。

どちらが最適で使いやすいかはわかりません。私は両方のテクノロジーの初心者なので、誰かが私を助けてくれることを願っています。

19

EJBとSpringを選択するのではなく、実際にはJava EEとSpringを選択します。EJBはJava EEの一部であり、 JMS、サーブレット、JSP、JSF、CDIなど。初期(J2EE 1.4)のエンタープライズ版のプログラミングモデルJavaには多くの欠陥と欠陥がありましたが、最も重要なものは多くのボイラープレートコードと大量のxml構成があり、面倒で冗長であることがわかりました。Conference-over-Configurationの原則を支持する代替フレームワークとしてSpringが導入されました。つまり、Springには、 Java EE 5は、Springの設定と同じ規約を採用する大幅な変更を導入し、物事を進めるために必要なコード量と複雑さを大幅に削減しました。これ以上の有利な利点を保持します。

また、Java EEは単なる仕様です。現実のアプリを作成するには実装が必要であり、Glassfish、JBoss、TomcatEEなど、今日ではたくさんあります。すべてがJava EE仕様の追加の複雑さを導入する異なる実装を提供します-つまり、選択する必要があるJava EE実装を選択する必要があります。単一のソースからのSpringを使用します。

どちらのフレームワークも、ほぼ同様の機能を提供します。すべてのサポートトランザクションORMは、ビジネスロジックを構築するためのツールを提供し、CDI、AOPをサポートします。 SpringとJava EEの両方で、必要な部分のみを使用できます。つまり、フレームワーク全体を使用する必要はありません。それらを一緒に使用することもできます。組み込み可能なコンテナの導入のおかげで、従来はSpringの領域であったデスクトップアプリケーションなどの分野で必要なJava EE機能も使用できるようになりました。

ただし、Java EEがSpringの背後にまだ欠けている領域の1つは、快適なテスト可能性です。EJBの単体テストを書くのは簡単ではありません。テスト内にボイラープレートコードを記述します(たとえば、テスト展開パッケージをビルドしてコンテナに展開するなど)。実際、Java EEは、すぐにEJBをテストするためのサポートを欠いています対照的に、SpringはテスタビリティとTDDを念頭に置いています。Springには、アプリケーションのすべての部分のテスト(ユニットテスト、統合テスト)とモックの両方のバンドルサポートが含まれているため、Spring Beanのテストは簡単です。

61
akhilless