アノテーション自体は、xmlのように機能しません。注釈とXMLはどちらもメタデータの種類です。メタデータはデータを説明するデータです。これを構成と呼びます。
この記事では、主にSpringの概要を紹介します| SpringMVC関連のアノテーション。
スプリングセクション
1. Beanアノテーションに注釈を付ける
@Componentコンポーネント、明示的な役割なし
@Serviceはビジネスロジックレイヤー(サービスレイヤー)で使用されます
データアクセスレイヤー(daoレイヤー)で使用される@Repository
プレゼンテーション層で使用される@Controller、コントローラーの宣言(Controller層)
2.注入されたBeanの注釈
@Autowired:型、変数、セッターメソッド、コンストラクターでのSpring。
@Inject:タイプに応じたJSR-330(名前に応じた@Name)、変数、セッターメソッド、コンストラクター。
@Resource:JSR-250。名前に従って(name属性を指定)、変数、セッターメソッド内。
どちらも、setメソッドと属性に注釈を付けることができます(属性に注釈を付けることをお勧めします(一目で、より少ないコードを記述します)。
@Autowiredのあいまいさの問題については、@ Autowiredの詳細な説明を参照してください。3つの実装方法、複数のあいまいさの解決策
@Qualifierおよび@Primaryは、Beanのあいまいさの問題に使用できます。
3. Java設定クラスの注釈
@Configurationは、現在のクラスが構成クラスであることを宣言します。これは、(クラスの)xml形式のSpring構成と同等です。
メソッドの@Beanアノテーションで、現在のメソッドの戻り値が(メソッドの)xmlの方法ではなくBeanであることを宣言します。
@Configurationは、現在のクラスを構成クラスとして宣言します。これは、内部的に@Componentアノテーションを組み合わせて、このクラスが(クラスの)Beanであることを示します
@ComponentScanはコンポーネントをスキャンするために使用されます。これはコンテキストと同等です:component-scan / in xml(クラス上)
@WishlyConfigurationは、@ Configurationと@ComponentScanを組み合わせたアノテーションであり、これら2つのアノテーションを置き換えることができます。
4. AOPの注釈
Springは、AspectJの注釈付きアスペクトプログラミングをサポートしています。
@Aspectはアスペクトを(クラスで)宣言します。
@ After、@ Before、@ Aroundを使用してアドバイスを定義すると、遮断ルール(カットポイント)をパラメーターとして直接取得できます。
@メソッド実行後に実行後(メソッド上)
@メソッド実行前に実行前(メソッド上)
@メソッド実行の前後に実行されて(メソッド上)
@PointCutはpointcutsを宣言し
ます。Java構成クラスで@EnableAspectJAutoProxyアノテーションを使用して、Springの(クラス上の)AspectJプロキシのサポートを有効にします。
5. @Bean属性のサポート
@Scope春のBeanインスタンスに提供された新しいコンテナを作成する方法(メソッドを、@Bean持っている必要があります)
含んで提供タイプ:
シングルトン(シングルトン、SpringコンテナにはBeanインスタンスが1つしかありません、デフォルトモード)、
プロテタイプ(各呼び出しは新しいBeanを作成します)、
リクエスト(Webプロジェクトでは、httpリクエストごとに新しいBeanを作成します)、
セッション(Webプロジェクトでは、 httpセッションごとに新しいBeanを作成します)、
GlobalSession(グローバルhttpセッションごとに新しいBeanインスタンスを作成します)
@StepScopeはSpring Batchにも関与しています
@PostConstruct JSR-250により提供され、コンストラクターの実行後に実行されます。xml構成ファイルのBeanのinitMethodと同等です。
@PreDestory JSR-250によって提供され、Beanが破棄される前に実行されます。XML構成ファイルのBeanのdestroyMethodと同等です。
6. @Valueアノテーション
@Valueは(属性の)属性の値を注入
し、次の注入をサポートします。
- 通常の文字を挿入する
@Value("Michael Jackson")
String name;
- オペレーティングシステムの属性を挿入する
@Value("#{systemProperties['os.name']}")
String osName;
- 式の結果を注入する
@Value("#{ T(java.lang.Math).random() * 100 }")
String randomNumber;
- 他のBeanプロパティを注入する
@Value("#{domeClass.name}")
String name;
- ファイルリソースを挿入する
@Value("classpath:com/hgs/hello/test.txt")
String Resource file;
- ウェブサイトのリソースを注入する
@Value("http://www.cznovel.com")
Resource url;
- 構成ファイルを挿入する
@Value("${book.name}")
String bookName;
注入構成の使用方法:
- 構成ファイル(test.properties)を書き込む
book.name=《三体》
- @PropertySourceロード構成ファイル(クラス上)
@PropertySource("classpath:com/hgs/hello/test/test.propertie")
- また、PropertySourcesPlaceholderConfigurer Beanを構成する必要があります。
7.環境の切り替え
@Profile EnvironmentのActiveProfilesを設定して、現在のコンテキストが使用する必要がある構成環境を設定します。(クラスまたはメソッドについて)
@Conditional Spring4は、このアノテーションを使用して、Conditionインターフェースを実装し、matchesメソッドを書き換えてBeanがインスタンス化されているかどうかを判別することにより、条件付きBeanを定義できます。(方法論的に)
8.非同期相関
@EnableAsync構成クラス、このアノテーションを介して、非同期タスクのサポートを開く、ナラティブAsyncConfigurerインターフェイス(クラス上)
@Asyncは、実際のBeanメソッドでこのアノテーションを使用して、非同期タスクであることを宣言します(メソッドまたはクラスのすべてのメソッドは非同期であり、非同期タスクを開始するには@EnableAsyncが必要です)。
9.スケジュールされたタスクに関連
@EnableSchedulingは、(クラスで)スケジュールされたタスクのサポートを有効にするために構成クラスで使用されます
@Scheduledは、これがcron、fixDelay、fixRateおよびその他のタイプを含むタスクであることを宣言します(メソッド、最初にスケジュールされたタスクのサポートを開く必要があります)
10. @有効化*注釈の説明
これらの注釈は主にxxxのサポートを有効にするために使用されます。
-
@EnableAspectJAutoProxy AspectJ自動プロキシのサポートを有効にする
-
@EnableAsync非同期メソッドのサポートを有効にする
-
@EnableSchedulingスケジュールされたタスクのサポートを有効にする
-
@EnableWebMvc Web MVC構成サポートを有効にする
-
@EnableConfigurationProperties @ConfigurationPropertiesアノテーション構成Beanのサポートをオンにする
-
@EnableJpaRepositoriesはSpringData JPAリポジトリのサポートを有効にします
-
@EnableTransactionManagementは注釈付きトランザクションのサポートを有効にします
-
@EnableTransactionManagementは注釈付きトランザクションのサポートを有効にします
-
@EnableCaching注釈付きキャッシュのサポートを有効にする
11.テスト関連メモ
-
@RunWith Runner、通常はSpringでJUnitをサポートするために使用されます
-
@RunWith(SpringJUnit4ClassRunner.class)
-
@ContextConfigurationは構成のApplicationContextをロードするために使用され、classes属性は構成クラスをロードするために使用されます
-
@ContextConfiguration(classes = {TestConfig.class})
12. SpringMVCパーツ
@EnableWebMvcは、一部のViewResolverやMessageConverterなどの構成クラスでWeb MVC構成サポートを有効にします。そのような文がない場合は、WebMvcConfigurerAdapterメソッドを書き直します(SpringMVCの構成に使用)
@ControllerはこのクラスをSpring MVCのコントローラーとして、フロントエンドのデバッグ用に宣言し、@ RestControllerを単調なバックグラウンドで使用するために宣言します
@RestControllerアノテーションは結合されたアノテーションであり、@ Controllerと@ResponseBodyの組み合わせに相当します。アノテーションはクラスにあります。つまり、このコントローラのすべてのメソッドがデフォルトで@ResponseBodyに追加されます。
その中で構成されているビューリゾルバーInternalResourceViewResolverは機能せず、メソッドはjspページまたはhtmlに戻ることができず、String / Jsonを返します。
@RequestMappingは、(クラスまたはメソッドの)アクセスパスとパラメーターを含むWeb要求をマップするために使用されます。
@ResponseBodyは、ページではなく応答に戻り値を置くことをサポートします。通常、ユーザーはjsonデータを返します(戻り値の横またはメソッド上)。
@RequestBodyを使用すると、アドレスの直後ではなく、リクエストのパラメーターをリクエスト本文に含めることができます。(パラメーターの前)
@PathVariableは、@ RequestMapping( "/ hello / {name}")によって宣言されたパスなどのパスパラメーターを受け取るために使用され、メモがパラメーターに配置される前に値を取得できます。通常、Restfulインターフェース実装メソッドとして使用されます。
@RequestRaramはパラメーターと値を渡すために使用され、属性またはメソッドパラメーターの前に配置できます。(1)値要求パラメーターのパラメーター名がパラメーターマッピング名として使用されます;(2)必須パラメーターが必須かどうか、デフォルトはtrue(必須)、必須に設定されている場合、着信パラメーターがない場合、エラーが報告されます。 (3)defaultValueは、リクエストパラメータのデフォルト値を設定します。
注釈によって@ControllerAdvice、我々は、同じ位置にグローバルコントローラのための注釈@Controller方法をプロファイルを置くことができる方法、に@ exceptionHandlerの、@ InitBinder、@ ModelAttribute注釈に利用できる
すべての注釈付き! RequestMappingのコントローラー内のメソッドが有効です。
@ExceptionHandlerは、コントローラー内の例外をグローバルに処理するために使用されます
@InitBinderを使用してWebDataBinderを設定し、WebDataBinderを使用してフォアグラウンド要求パラメーターをモデルに自動的にバインドします。
@ModelAttributeの本来の役割は、キーと値のペアをモデルにバインドすることです。@ ControllerAdviceでは、グローバル@RequestMappingがここで設定されたキーと値のペアを取得できます。
@CrossOriginは、クロスドメインの問題を解決するために使用されます。フィルターやインターセプトメソッドではなく、インターフェースで宣言するだけです。
記載漏れや誤りがございましたら、ご指摘いただければ幸いです。
13. SpringBootパーツ
@ServletComponentScan SpringBootApplicationで@ServletComponentScanアノテーションを使用した後、追加のコードなしで、@ WebServlet、@ WebFilter、@ WebListenerアノテーションを介してサーブレット、フィルター、リスナーを直接登録できます。
————————————————
著作権ステートメント:この記事はCSDNブロガー "IT_faquir"のオリジナルの記事であり、CC 4.0 BY-SA著作権契約に従います。元のソースリンクとこのステートメントを添付して転載してください。
元のリンク:https://blog.csdn.net/IT_faquir/article/details/78025203