2

基本的なサーブレット処理を学ぶためだけに、サーブレット 3.0 Web アプリを作成しようとしています。通常、私は春を使用します。

これで、データベースにクエリを実行する DAO にアクセスするサーブレットができました。では、その DAO をインスタンス化して使用する最良の方法は何ですか? 私の最善の推測は、サーブレットにプライベート プロパティを設定し、サーブレットの作成時に DAO のインスタンスを作成することです。

しかし、サーブレットは複数回作成されますか?

サーブレット 3.0 で利用できるスプリング依存性注入に似たものはありますか?

4

2 に答える 2

2

EJB 3 依存性注入は非常に簡単に使用できます。単一のアノテーション @EJB によって、宣言された Bean が注入されます。SomeDAO Bean を Servlet 3.0 に注入すると、次のようになります。

@WebServlet(name="Messenger", urlPatterns={"/Messenger"})
public class Messenger extends HttpServlet {    
    @EJB
    SomeDAO someDAO;
 }

注入された SomeDAO Bean は、インターフェースまたはインターフェースなしのビュー Bean である可能性があります。インターフェースの実装が 1 つしかない限り、式なしで注入されます。

于 2013-07-31T17:28:01.930 に答える
2

javax.servlet API は、java-ee に含まれるテクノロジの 1 つです。

CDIは、java-ee の Context and Dependency Injection テクノロジーです。

あなたの質問に答えるために、あなたのユースケースはCDIとサーブレットだけを使用することで解決できます。

ただし、上記をサポートするほとんどのアプリケーション サーバー ( TomEEGlassfish Web プロファイルなど) は、EJB (cdi を使用) と JPA もサポートします。EJB+JPA を使用して DAO を実装できます。

Arjan Tijms は、java-ee-7 の世界で何が含まれ、何が起こっているかについての素晴らしいリンクの概要をまとめました。

于 2013-07-31T20:33:11.863 に答える