ホームページ  >  記事  >  Java  >  Spring の JavaConfig アノテーションの詳細な紹介

Spring の JavaConfig アノテーションの詳細な紹介

黄舟
黄舟オリジナル
2017-03-09 11:01:241355ブラウズ

Java プログラム、特に Java EE アプリケーションを開発する場合、さまざまな設定ファイルを扱うことは常に避けられません。 Java アノテーションは、設定ファイルを整理し、設定ファイルがあちこちに飛び散るのを防ぐのに役立ちます。 SpringのJavaConfigアノテーションについては以下の記事で詳しく紹介していますので、必要な方は参考にしてみてください。

はじめに

従来の Spring は一般に XML 設定に基づいていることは誰もが知っていますが、後に多くの JavaConfig アノテーションが追加されました。特に springboot は基本的にすべて Java の設定です。それを理解していないと、本当に慣れていません。ここにメモを書きます。

@RestController

restfull アプリケーションの開発をより便利にサポートするために、Spring 4 には、Controller アノテーションよりも多くの機能が追加されており、デフォルトで ResponseBody アノテーションが基になる RequestMapping メソッドに追加されます。それぞれにこの注釈を追加する必要があるのは面倒です。

@Configuration

このアノテーションは、このクラスが独自の Component アノテーションを伴う Spring の構成クラスであることを示します

@ImportResource

xml

<import resource="applicationContext-ehcache.xml"/>

存在の必要性

これは従来の XML 設定と互換性があります。結局のところ、JavaConfig は aop:advisor と tx:advice をうまくサポートできません。 @EnableAspectJAutoProxy (aop:aspectj-autoproxy と同等) を導入します。 aop:config XML 要素に相当する

@ComponentScan

対応する xml

<context:component-scan base-package="com.xixicat.app"/>

この設定には、次の設定関数が自動的に含まれます:

<context:annotation-config/>

は、AutowiredAnnotationBeanPostPro を Spring に登録しますコンテナcessor (@Autowired を使用する場合は登録する必要があります)、CommonAnnotationBeanPostProcessor (@Resource、@PostConstruct、@PreDestroy などを使用する場合に登録する必要があります)、PersistenceAnnotationBeanPostProcessor (@PersistenceContext を使用する場合に登録する必要があります)、および RequiredAnnotationBeanPostProcessor (@Required を使用する場合に登録する必要があります) )。

Spring 3.1RC2 バージョンでは、Configuration の注釈が付けられたクラスを ComponentScan で指定されたパッケージ スコープ内に含めることができないことに注意してください。そうでない場合は、エラーが報告されます。

@Bean

の対応するxmlは次のとおりです:

<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper" />

@EnableWebMvc

対応するxmlは次のとおりです:

<mvc:annotation-driven />

この設定は DefaultAnnotationHandlerMapping を自動的に登録します(リクエストとのハンドラー メソッドのマッピング関係を登録する) と AnnotationMethodHandlerAdapter (実際に呼び出す前にハンドラー メソッドのパラメーターを処理する) 2 つの Bean が @Controller アノテーションの使用をサポートします。

主な機能は次のとおりです:

  1. 設定可能な ConversionService (カスタム型変換に便利)

  2. @NumberFormat を使用した数値型フィールドの書式設定をサポート

  3. @DateTimeFormat を使用した日付、カレンダー、Joda の書式設定をサポートTime フィールド (Joda Time がクラスパス上にある場合)

  4. @Valid パラメーターの検証をサポート (JSR-303 関連プロバイダーがクラスパス上にある場合)

  5. @RequestBody/@ResponseBody アノテーションの XML 読み取りおよび書き込みをサポート (JAXB がクラスパス上)

  6. @RequestBody/@ResponseBody アノテーションの JSON 読み取りおよび書き込みをサポート (Jackson がクラスパス上にある場合)

@ContextConfiguration

主に junit テスト中に Java 構成を指定します

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
 "classpath*:spring/*.xml",
 "classpath:applicationContext.xml",
 "classpath:applicationContext-rabbitmq.xml",
 "classpath:applicationContext-mail.xml",
 "classpath:applicationContext-medis.xml",
 "classpath:applicationContext-mybatis.xml"})
@TransactionConfiguration(transactionManager = "mybatisTransactionManager", defaultRollback = false)
public class AppBaseTest {
 //......
}

@ResponseStatus

は主にREST開発に使用され、返されたhttpリターンコードに注釈を付けます。具体的な値については、org.springframework.http.HttpStatus列挙を参照してください。通常、post メソッドは HttpStatus.CREATED を返し、DELETE メソッドと PUT メソッドは HttpStatus.OK を返します。例外処理を設定することもできます。@ExceptionHandler と @ControllerAdvice を参照してください

@ExceptionHandler

は主に、指定された例外を処理し、指定された HTTP ステータス コードを返すために使用され、各コントローラー メソッド独自の try catch を保存します。一般に、アプリケーションごとに例外基本クラスを定義してからビジネス例外を定義すると、ビジネス例外を均一にキャプチャできます。

@ExceptionHandler(BizException.class)
 @ResponseStatus(HttpStatus.BAD_REQUEST)
 public @ResponseBody
 ReturnMessage bizExceptionHandler(Exception ex) {
  logger.error(ex.getMessage(),ex);
  return new ReturnMessage(HttpStatus.BAD_REQUEST.value(),ex.getMessage());
 }

ただし、このメソッドはコントローラーのメソッド呼び出しチェーンによって生成された例外に限定されていることに注意してください。スケジュールされたタスクも Spring で使用されている場合、このアノテーションはそれをインターセプトしません。

@ControllerAdvice

は、コントローラー メソッドをインターセプトするために @ExceptionHandler とともに使用されます。

りー

概要

以上がSpring の JavaConfig アノテーションの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。