20+ Springの一般的な注意事項として、Java開発は習得する必要がある

アノテーション自体は、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;

注入構成の使用方法:

  1. 構成ファイル(test.properties)を書き込む
book.name=《三体》
  1. @PropertySourceロード構成ファイル(クラス上)
@PropertySource("classpath:com/hgs/hello/test/test.propertie")
  1. また、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

元の記事を17件公開しました 賞賛されました0 訪問数215

おすすめ

転載: blog.csdn.net/neheqi/article/details/105430126