0

私はJava、jsf、jspに本当に慣れていないので、それがどのように機能するかをすぐに学ぶ必要があります. したがって、私が練習に使用しているウェブサイトには、それらが何を意味するのか分からないいくつかの用語などがあり、誰かがそれらが何を意味し、どのように/何のために使用されるかを説明できることを望んでいます:)

Requestscoped
Applicationscoped
Sessionscoped
EntityManager

そして、誰かがこれらの行が何をするかを説明してもらえますか?

@RequestScoped
public class Dao {

    @DataRepository
    @Inject
    private EntityManager entityManager;
4

2 に答える 2

2

まず、Java (5 以降) では、@(eg など) で始まる「もの」はアノテーション@Deprecatedと呼ばれます。

注釈は、プログラム自体の一部ではないプログラムに関するデータを提供します。注釈を付けるコードの操作に直接影響はありません

JavaBeans を JSF で使用する場合は、スコープに構成する必要があります (定義はここにあります)。

  • @RequestScoped: このスコープのオブジェクトは、リクエストの開始からリクエストの終了まで表示されます。リクエスト スコープは、リクエストの最初から始まり、レスポンスがクライアントに送信された時点で終了します。リクエストが転送されると、転送されたページにオブジェクトが表示されます。これは、そのページがまだ同じリクエスト/レスポンス サイクルの一部であるためです。リクエスト スコープを持つオブジェクトは、なし、リクエスト、セッション、またはアプリケーション スコープを持つ他のオブジェクトを使用できます。サーブレットで考えると、マネージドBeanはHttpServletRequestリクエストが終わるまで(レスポンスがクライアントに送信されるまで)に格納されます。その後、Bean はリクエストに存在しなくなります。
  • @SessionScoped: セッション スコープを持つオブジェクトは、セッションに属するすべての要求/応答サイクルで表示されます。このスコープを持つオブジェクトの状態は、リクエスト間で保持され、オブジェクトまたはセッションが無効になるまで持続します。セッション スコープを持つオブジェクトは、なし、セッション、またはアプリケーション スコープを持つ他のオブジェクトを使用できます。基本的に、これらのオブジェクトはHttpSession(サーブレットを再度参照してください) に格納されます。JSESSIONID各セッションには、Bean が関連付けられているセッション ID ( として知られる) があります。
  • ApplicationScoped: アプリケーション スコープを持つオブジェクトは、アプリケーションがアクティブである限り、アプリケーションを使用するすべてのクライアントのすべての要求/応答サイクルで表示されます。サーブレットに関して言えば、これはServletConfig.
  • @NoneScoped: このスコープを持つオブジェクトは、どの JSF ページにも表示されません。構成ファイルで使用される場合、アプリケーション内の他のマネージド Bean によって使用されるマネージド Bean を示します。スコープのないオブジェクトは、スコープのない他のオブジェクトを使用できます。

の場合EntityManager、これは永続コンテキストに関連付けられています。永続的なエンティティ インスタンスの作成と削除、主キー ID によるエンティティの検索、およびすべてのエンティティのクエリに使用されます。詳細については、JPA (Java Persistence API) 仕様またはHibernateを参照してください。

@Inject、インスタンスが注入可能であることを意味します。それらは、依存性注入または制御の反転 (IOC)という悪名高い古い言葉に従います。これが基本的に意味することは、リソースEntityManager entityManagerが必要な場合(あなたのケースでは、JEEコンテナがリソースをインスタンス化することです)(コンストラクタなどを介して直接インスタンス化する必要はありません)。

@DataRepository意味がわかりません。前にそれを見たことがない。

これがお役に立てば幸いです。

于 2011-04-02T22:26:27.170 に答える
1

これらの用語は通常、特に Java ではなく、guice のような依存性注入フレームワークに関連付けられています。

http://code.google.com/p/google-guice/wiki/Scopesでは、guice に組み込まれているさまざまなスコープについて説明しています。

デフォルトでは、Guice は値を提供するたびに新しいインスタンスを返します。この動作は、スコープを介して構成できます。スコープを使用すると、アプリケーション ( @Singleton)、セッション ( @SessionScoped)、または要求 ( @RequestScoped) の存続期間中、インスタンスを再利用できます。Guice には、Web アプリのスコープを定義するサーブレット拡張機能が含まれています。カスタム スコープは、他の種類のアプリケーション用に作成できます。

于 2011-04-02T22:21:32.720 に答える