1。注釈を使用してください:
Springの構成ファイルApplicationContext.xmlで、注釈スキャンを追加します。構成アイテムは、指定されたパケットのスキャンを構成して、依存関係噴射を実装します。
<?xml version = "1.0" encoding = "utf-8"?> <span style = "font-size:18px;"> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:context = "http://www.springframework.org/schema/context" xmlns:aop = "http://www.springframework.org/schema/aop" xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/spring/spring/spring/spring/spring http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org.org. http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <aop:aspectj-autoproxy/> <context:annotation-config/> <コンテキスト:Component-Scansabes-package =" com.test "/> //
2。一般的なコメント:
@controller@service@autowired@requestmapping@requestparam@modelattribute@cacheflush@resource@postconstruct@predestroy@repository@component(推奨されていない)@scope@sessionattributes@insbinder@reby reagn@qualifier
3.一般的に使用される春の注釈:
@Controller(プレゼンテーションレイヤー用)
@Controller Annotationを使用してユーザーアクセスを識別した後、ユーザーが管理のためにSpringコンテナに引き渡されることを意味します。スプリングコンテナに「ユーザーアクション」という名前のアクションがあります。この名前は、ユーザーアクションクラス名に基づいて撮影されます。注:@Controllerがその値を指定していない場合、@Controller @、デフォルトのBean名はクラス名の最初の文字の小文字です。 valueを指定する場合、@controller(value = "useraction")】または【@controller( "useraction")】、beanの名前として値を使用します。
ここでのユーザーは、@scopeアノテーションも使用します。 @scope( "Prototype")は、アクションの範囲がプロトタイプとして宣言されることを意味します。コンテナのScope = "Prototype"を使用して、各要求にそれを処理するための別のアクションがあることを確認できます。スプリングデフォルトのスコープは、Singleton Mode(Scope = "Singleton")です。これは、アクションオブジェクトのみを作成します。各アクセスは同じアクションオブジェクトです。データは安全ではありません。 struts2では、各アクセスが異なるアクションに対応する必要があります。 scope = "prototype"は、リクエストがあるときにアクションオブジェクトが作成されるようにします。
@コントローラ
@scope( "Prototype")Public ClassユーザーアクションはBaseAction <user> {}を拡張します@サービス(ビジネスロジックレイヤーで使用)
@Serviceアノテーションは、インターフェイスではなく、サービスインターフェイスの実装クラスで使用されることに注意してください。
これは、春のコントロールの反転を非常によく反映しています。オブジェクトにオブジェクト自体をインスタンス化してオブジェクトに積極的に依存させるのではなく、コンテナを使用してIOCによって管理されるオブジェクトを作成します。例:
アクションがuserserviceimplを使用したい場合、userserviceimplのインスタンスを積極的に作成する必要はありません。 userserviceImplインスタンスの作成は、春に引き渡されました。 Springは、作成されたuserserviceImplインスタンスをアクションに提供し、アクションを取得した後に直接使用できます。アクションは、userserviceImplインスタンスを積極的に作成した直後に使用できますが、Springを受動的に待機してユーザーサービスインスタンスを作成してから、アクションに注入します。これは、「userserviceimpl」クラスに対するアクションの「制御」が「逆転」されていることを示しています。イニシアチブは私自身の手にあることがわかります。 「userserviceimpl」クラスインスタンスを使用する必要があります。私はそれをすぐに使用するためにイニシアチブをとることができます。しかし、今では、「userserviceimpl」クラスインスタンスの新しいインスタンスにイニシアチブをとることはできません。新しい「userserviceimpl」クラスインスタンスのパワーは、春までに奪われました。 springのみが「userserviceimpl」クラスインスタンスの新しいインスタンスがあり、アクションはrviceimplクラスのインスタンスの後に「userse」クラスを作成するためにスプリングのみを待つことができます。 userserviceは、Acionがアクションに依存する必要があるuserserviceimplに依存しています。
@Service( "Userservice")Public Class userserviceimplを実装するuserservice {}@リポジトリ(データ管理用)
著者は、ツールを使用してエンティティレイヤーデータモデルとマッパーを逆に生成するため、この注釈は使用されませんが、これは単にスプリングコンテナに豆を注入します。
@Repository(value = "userdao")public class userdaoimpl extends basedaoimpl <user> {}4.一般的に使用されるSpringMVCアノテーション:
@Autowired(タイプで注入)
クラスのメンバー変数、メソッド、およびコンストラクターに自動アセンブリ作業を完了するように注釈を付けます。簡単に言えば、豆を呼び出して、それが存在し、コンテナで管理されていることを春に伝えることです。
@AutowiredのSpringオンライン記事からの検索は、Beanタイプに従って。登録タイプは一意でなければなりません。そうしないと、例外が報告されます。
@Autowiredアノテーションがマップタイプで動作する場合、マップのキーが文字列タイプの場合、Springはコンテナ内のすべてのタイプをマップ値の対応するタイプに追加し、BeanのIDまたは名前をマップのキーとして使用します。
@Autowiredの別の関数は、BeanFactory Type、ApplicationContext Type、ResourceLoader Type、ApplicationEventPublisherタイプ、およびメッセージソースタイプで注釈が付けられている場合、Springは追加の操作なしでこれらの実装クラスのインスタンスを自動的に挿入することです。
@Autowired
プライベートiReportService Reportservice;
@Resource(名前で注入)
@Autowiredと同様に、@ResourceはデフォルトでBeanの名前に従って検索します。発見されていない場合は、タイプごとに検索します。
@リソース
プライベートデータソースDataSource; //「DataSource」という名前のBeanを注入する
@Resource(name = "DataSource")
@resource(type = dataSource.class)
拡張された質問:タイプごとのアセンブリとは何ですか、名前によるアセンブリとは何ですか?
タイプとは、スプリングコンテナに指定された属性と同じタイプの豆がある場合、属性が自動的に組み立てられることを意味します。このタイプの複数の豆がある場合、例外が実行され、タイプごとの自動アセンブリを使用できないことが指摘されています。一致する豆が見つからない場合、何も起こりません。
いわゆる名前は、属性名に基づいた自動アセンブリを意味します。このアイテムは、属性名とまったく同じスプリングコンテナの豆をチェックし、自動アセンブリを実行します。
@RequestMapping(マップリクエストアドレス)
要求されたアドレスマッピングを処理するために使用される注釈は、クラスまたは方法で使用できます。クラスで使用するために、クラスでその応答要求を表すすべての方法は、このアドレスを親のパスとして取得します。
つまり、6つの属性があります。
1。値、メソッド;
値:リクエストの実際のアドレスを指定し、指定されたアドレスはURIテンプレートモード(後で説明します)にすることができます。
方法:要求されたメソッドタイプ、取得、投稿、配置、削除などを指定します。
2。消費、生産
消費者:Application/JSON、Text/HTMLなど、リクエストを処理する提出(コンテンツタイプ)のタイプを指定します。
プロデュース:返されたコンテンツタイプを指定します。これは、リクエストリクエストヘッダーの(Accept)タイプに指定されたタイプが含まれている場合にのみ返されます。
3。パラマ、ヘッダー
PARAMS:メソッドを処理する前に、リクエストに特定のパラメーター値を含める必要があることを指定します。
ヘッダー:メソッドがリクエストを処理するために、リクエストに指定されたヘッダー値が含まれている必要があることを指定します。
@controller@requestmapping( "/bbtforum.do")public class bbtforumcontroller {@requestmapping(params = "method = listboardtopic")public string listboardtopic(int topid、user user){}}@requestmapping( "/softpg/downsoftpg.do")@requestmapping method = requestmethod.post)@RequestMapping(value = "/osu/product/detail.do"、params = {"modify = false"}、method = requestmethod.post)@RequestParam(リクエストパラメーターの値を取得)
たとえば、ブラウザのアクセスアドレスは次のとおりです。LocalHost:8080/hello?id = 1000、例えばID値を取得します。
@restControllerPublic Class Hellocontroller {@RequestMapping(value = "/hello"、method = requestmethod.get)public string sayshello(@requestparam( "id")integer id){return "id:"+id; }}@pathvaribale(urlでデータを取得)
@RestControllerPublic Class HelloController {@RequestMapping(value = "/hello/{id}"、method = requestmethod.get)public string sayshello( @pathvariable( "id")integer id){return "id:"+id; }}@ResponseBody(returnタイプJSON)
関数:このアノテーションは、コントローラーメソッドによって返されたオブジェクトを適切なhttpmessageConverterを介して指定された形式に変換し、応答オブジェクトのボディデータ領域に書き込みます。
使用する時間:返されたデータは、HTMLタグのあるページではなく、他の形式(JSON、XMLなど)のデータが使用されるときに使用されます。
要約します
上記は、編集者によって紹介された春のspringmvcの一般的な注釈の分析です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!