ビーンは、注釈を定義し | |
---|---|
@コントローラー/ @コントローラー( "Beanの名前。") |
なアクションとして定義する制御層豆、 |
サービス@ /サービス@( "Beanの名前。") |
定義されたビジネス層豆 |
@リポジトリ/ @リポジトリ( "Beanの名前。") |
DAO層がビーン定義されています |
@成分 |
ビーンの定義、分類悪い使用 |
Beanの自動組立ノート | |
---|---|
@Autowired |
ビーンは、名前によって組み立て |
@Autowired(=真必須) |
そうでない場合は例外をスローし、マッチング豆を見つけてください。デフォルト値はtrueです |
@ Autowired @修飾子( "Bean名") |
修飾子は、より多くの問題を発見するタイプのマッチングによってビーンを解決@Autowiredと組み合わせて使用する、@名前で、豆を組み立てます。 |
@リソース |
型アセンブリBeanによって |
豆は、スコープと人生のプロセスを定義しました | |
---|---|
@Scope( "プロトタイプ") |
一般的に二つの方法で使用される値の五種類、:シングルトン:シングルトン、複数のケース:プロトタイプリクエスト、セッション、globalSession |
他の3つの@Scopeのアノテーション
要求
ここでもリクエスト、セッション、およびグローバルセッションタイプは、Webアプリケーションでのみ有用であり、通常XmlWebApplicationContext一般的な使用です。
<ビーンID = "requestPrecessor" クラス= "... RequestPrecessor" スコープ= "要求" />
Springコンテナは、新しいRequestPrecessorの作成は、各HTTP用XmlWebApplicationContextリクエストをオブジェクトリクエストの終了後に、オブジェクトのライフサイクルは、近くに来るリクエストのライフサイクルにおけるJavaのウェブとして。同時に、100のHTTPリクエストが来たときに、コンテナはこの例のための10の新しいRequestPrecessorは10個の要求だった、と彼らはお互いに、簡単な言葉に干渉しないことを、プロトタイプは特殊なケースとして見ることができる要求を作成する時間があり、シーンに加えて、ほとんど意味的に、より具体的です。
セッション
Webアプリケーションの場合、セッションに最も一般的にはセッション中にこの情報を入れて、ユーザーのログイン情報であり、我々はセッションのスコープを開発するために、次の形式を使用することができます。
<ビーンID = "のUserPreferences" クラス= "...のUserPreferences" スコープ= "セッション" />
Springコンテナは、はるかに長いリクエストスコープの豆よりも、何の違いを他の側面を生き残るんだろう、自分自身のそれぞれの新しいのUserPreferences例に個別のセッションを作成するJavaのWebセッションのライフサイクルであれば。
グローバルセッション
<ビーンID = "のUserPreferences" クラス= "...のUserPreferences" スコープ= "globalsession" />
治療の通常セッションとして理にかなって、この範囲で使用される一般的なサーブレットのWebアプリケーションならば、それは、porletのセッショングローバルスコープにマッピングされているグローバルなセッションベースporlet Webアプリケーションでアプリケーション、コンテナの意志スコープそれだけ。
自動的にBYNAMEによって注入されたリソースのデフォルト@ @ Autowiredに@Resource効果相当、。
@Resourceは、2つの属性が、名前とタイプ、春はBeanの名前に注釈name属性の解決さを@Resourceなり、type属性は、豆の種類に解決されていることのポイントがより重要ですしています。
-
あなたが組み立てた豆のユニークなマッチを見つけるために、Springコンテキストから、名前とタイプを指定した場合は、例外がスローされます見つけることができません
-
名前が指定されている場合、文脈から、名前を見つける(ID)が一致豆を組み立て、例外がスローされ見つけることができません
-
タイプが指定されている場合は、豆の種類はユニークが組み立て見つけると一致する文脈から、例外がスローされます、見つける以上見つけることができません
-
自動組立BYNAMEの方法によれば、指定された名前、および指定しないタイプもあれば、一致しない場合、一致が自動的に組み立てられる場合、マッチは、バックオフプリミティブ型です。
違い@Autowiredと@Resource?
1、@Autowired @Resourceと豆を組み立てるために使用することができる。フィールド(出願)に記述された、またはセッターメソッドに書き込むことができます。
2、フィッティング@Autowiredデフォルトの型押しが(春であるこの業界にコメントする)、デフォルトではクレームに従属するオブジェクトが存在しなければなりません、
@Autowired(必須=偽):ヌル値を許可するには、それが必要とされる属性は、次のような、falseに設定することができます
一致が見つからない場合、または複数の一致が発見された場合、それは(BeanCreationException)に例外がスローされます、@Qualifier注釈、@ Qualifire注釈指定の名前の使用と組み合わせることができる場合(この時間はタイプを指定し、アセンブリの種類に応じて@Autowiredと名)。次のとおりです。
修飾子( "baseDao" @ @Autowired() ) プライベート BaseDao baseDao。
図3は、リソース(この注釈は、J2EEに属している)@、デフォルトでは場合は、デフォルトでは、フィールドに書かれたノートには、インストール名で検索するフィールド名を取る際に、name属性を指定しない場合、名前は、name属性で指定することができ、名前によって組み立てアセンブリのデフォルトの名前を取るために、プロパティのセッターメソッドで書かれたメモ。すなわち名前と一致する場合豆の種類に応じて、組み立てられたときに見つけることができません。しかし、name属性が指定されている場合ならば、名前だけで組み立てられることに注意してください、例外をスロー見つけることができません。
@Resource(名前= "baseDao" ) プライベート BaseDao baseDao。
フィールド上の@Resource注釈は、そのsetterメソッドを書いていない、とこのコメントは春の結合を低減、J2EEの一部です。このコードは比較的エレガントな外観です。
@RequestMapping
RequestMappingは、クラスやメソッドのために使用することができ、注釈リクエストアドレスマッピングするための処理です。
クラスに対して、要求クラスに応じて、すべてのメソッドは、親パスとしてアドレスで表されています。
ノートに6つの基本的な使い方と6つの属性を(説明3つのカテゴリーに分類)、RequestMapping
1、値、方法。
値:要求の指定物理アドレス、アドレスは、URIテンプレートモードを指定することができます。
方法:この方法は、指定要求のタイプを、GET、POST、PUT、DELETEなど。
2、消費、生産、
消費:コンテンツタイプ(Content-Typeの)のプロセスを指定した要求を提出し、例えば、アプリケーション/ JSON、text / htmlの。
生成:返される要求のコンテンツタイプを指定したタイプを含む要求ヘッダーは(承諾)型に復帰する場合にのみ。
3、paramsは、ヘッダー。
params:指定要求が処理方法を許可する前に、特定のパラメータ値が含まれている必要があります。
ヘッダー:指定要求は、要求を処理するためにこのメソッドために、特定の指定されたヘッダ値を含まなければなりません。