クラス ContentNegotiationManagerFactoryBean

java.lang.ObjectSE
org.springframework.web.accept.ContentNegotiationManagerFactoryBean
実装されたすべてのインターフェース:
AwareFactoryBean<ContentNegotiationManager>InitializingBeanServletContextAware

public class ContentNegotiationManagerFactoryBean extends ObjectSE implements FactoryBean<ContentNegotiationManager>, ServletContextAware, InitializingBean
ContentNegotiationManager を作成し、ContentNegotiationStrategy インスタンスで構成するファクトリ。

このファクトリは、基礎となる戦略を構成するプロパティを提供します。以下の表は、プロパティ名、デフォルト設定、設定に役立つ戦略を示しています。

プロパティ Setter デフォルト値 基礎戦略 有効または無効
favorParameterfalseParameterContentNegotiationStrategy オフ
favorPathExtensionfalse (5.3 現在)PathExtensionContentNegotiationStrategy オフ
ignoreAcceptHeaderfalseHeaderContentNegotiationStrategy 使用可能
defaultContentTypenullFixedContentNegotiationStrategy オフ
defaultContentTypeStrategynullContentNegotiationStrategy オフ

または、上記の便利なビルダーメソッドの使用を回避し、setStrategies(List) を介して使用する正確な戦略を設定できます。

非推奨のメモ : 5.2.4 では、コンテンツネゴシエーションおよび RequestMappingHandlerMapping での同様の非推奨のリクエストマッピングにパス拡張を使用しないようにするために、favorPathExtension および ignoreUnknownPathExtensions は非推奨です。詳細については、課題 #24719 を参照してください。

導入:
3.2
作成者:
Rossen Stoyanchev, Brian Clozel
  • コンストラクターの詳細

    • ContentNegotiationManagerFactoryBean

      public ContentNegotiationManagerFactoryBean()
  • メソッドの詳細

    • setStrategies

      public void setStrategies(@Nullable ListSE<ContentNegotiationStrategy> strategies)
      使用する戦略の正確なリストを設定します。

      注意 : このメソッドの使用は、デフォルトの固定された戦略セットをカスタマイズするこのクラスの他のすべての setter の使用と相互に排他的です。詳細については、クラスレベルのドキュメントを参照してください。

      パラメーター:
      strategies - 使用する戦略
      導入:
      5.0
    • setFavorParameter

      public void setFavorParameter(boolean favorParameter)
      リクエストされたメディア型を判別するためにリクエストパラメーター(デフォルトでは「フォーマット」)を使用する必要があるかどうか。このオプションを機能させるには、media type mappings を登録する必要があります。

      デフォルトでは、これは false に設定されています。

      関連事項:
    • setParameterName

      public void setParameterName(StringSE parameterName)
      setFavorParameter(boolean) がオンのときに使用するクエリパラメーター名を設定します。

      デフォルトのパラメーター名は "format" です。

    • setFavorPathExtension

      @DeprecatedSE public void setFavorPathExtension(boolean favorPathExtension)
      使用すべきではありません。
      5.2.4 以降。パス拡張構成オプションの非推奨については、クラスレベルのメモを参照してください。このメソッドに代わるものはないため、5.2.x では false に設定する必要があります。5.3 では、デフォルトが false に変更され、このプロパティの使用は不要になります。
      リクエストされたメディア型を判別するために、URL パスのパス拡張子を使用する必要があるかどうか。

      デフォルトでは、これは false に設定されています。この場合、パス拡張はコンテンツネゴシエーションに影響を与えません。

    • setMediaTypes

      public void setMediaTypes(PropertiesSE mediaTypes)
      キーから MediaType へのマッピングを追加します。キーは小文字に正規化され、パス拡張子、ファイル名拡張子から抽出されたか、クエリパラメーターとして渡された可能性があります。

      path extension strategyServletContext.getMimeType(java.lang.String)EE および MediaTypeFactory を介したルックアップにフォールバックできる一方で、parameter strategy は機能するためにそのようなマッピングを必要とします。

      注意 : ここで登録されたマッピングは、ContentNegotiationManager.getMediaTypeMappings() を介してアクセスでき、パラメーターおよびパス拡張戦略だけでなく使用できます。例: Spring MVC 構成を使用します。例: @EnableWebMvc または <mvc:annotation-driven>、メディア型マッピングもプラグインされています:

      • ResourceHttpRequestHandler で提供される静的リソースのメディア型を決定します。
      • ContentNegotiatingViewResolver でレンダリングされたビューのメディア型を決定します。
      • RFD 攻撃検出の安全な拡張機能をリストします(詳細については、Spring Framework のリファレンスドキュメントを確認してください)。
      パラメーター:
      mediaTypes - メディア型のマッピング
      関連事項:
    • addMediaType

      public void addMediaType(StringSE key, MediaType mediaType)
      プログラムによる登録のための setMediaTypes(java.util.Properties) の代替。
    • addMediaTypes

      public void addMediaTypes(@Nullable MapSE<StringSE,MediaType> mediaTypes)
      プログラムによる登録のための setMediaTypes(java.util.Properties) の代替。
    • setIgnoreUnknownPathExtensions

      @DeprecatedSE public void setIgnoreUnknownPathExtensions(boolean ignore)
      使用すべきではありません。
      5.2.4 現在。パス拡張設定オプションの廃止に関するクラスレベルの注意を参照してください。
      どのメディア型にも解決できないパス拡張子を持つリクエストを無視するかどうか。これを false に設定すると、一致するものがなければ HttpMediaTypeNotAcceptableException になります。

      デフォルトでは、これは true に設定されています。

    • setUseJaf

      @DeprecatedSE public void setUseJaf(boolean useJaf)
      使用すべきではありません。
      5.0 以降、setUseRegisteredExtensionsOnly(boolean) が優先されます。
      Java アクティベーションフレームワークをファイル拡張子からメディア型にマップするためのフォールバックオプションとして使用するかどうかを指定します。
    • setUseRegisteredExtensionsOnly

      public void setUseRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly)
      favorPathExtension または setFavorParameter(boolean) が設定されている場合、このプロパティは、登録された MediaType マッピングのみを使用するか、動的な解決を許可するかを決定します。MediaTypeFactory 経由。

      デフォルトではこれは設定されておらず、動的解決がオンになっています。

    • setIgnoreAcceptHeader

      public void setIgnoreAcceptHeader(boolean ignoreAcceptHeader)
      "Accept" リクエストヘッダーのチェックを無効にするかどうか。

      デフォルトでは、この値は false に設定されています。

    • setDefaultContentType

      public void setDefaultContentType(MediaType contentType)
      コンテンツ型がリクエストされない場合に使用するデフォルトのコンテンツ型を設定します。

      デフォルトでは、これは設定されていません。

      関連事項:
    • setDefaultContentTypes

      public void setDefaultContentTypes(ListSE<MediaType> contentTypes)
      コンテンツ型がリクエストされない場合に使用するデフォルトのコンテンツ型を設定します。

      デフォルトでは、これは設定されていません。

      導入:
      5.0
      関連事項:
    • setDefaultContentTypeStrategy

      public void setDefaultContentTypeStrategy(ContentNegotiationStrategy strategy)
      コンテンツ型がリクエストされていないときに使用するコンテンツ型を決定するために使用するカスタム ContentNegotiationStrategy を設定します。

      デフォルトでは、これは設定されていません。

      導入:
      4.1.2
      関連事項:
    • setServletContext

      public void setServletContext(ServletContextEE servletContext)
      ServletContext を挿入するために Spring によって呼び出されます。
      次で指定:
      インターフェース ServletContextAwaresetServletContext 
      パラメーター:
      servletContext - このオブジェクトによって使用される ServletContext オブジェクト
      関連事項:
    • afterPropertiesSet

      public void afterPropertiesSet()
      インターフェースからコピーされた説明: InitializingBean
      すべての Bean プロパティを設定し、BeanFactoryAwareApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。

      このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。

      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
    • build

      public ContentNegotiationManager build()
      ContentNegotiationManager インスタンスを作成して初期化します。
      導入:
      5.0
    • getObject

      インターフェースからコピーされた説明: FactoryBean
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。

      BeanFactory と同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。

      この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する FactoryBeanNotInitializedException をスローします。

      Spring 2.0 以降、FactoryBeans は null オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、FactoryBeanNotInitializedException はスローされません。FactoryBean の実装では、必要に応じて FactoryBeanNotInitializedException 自体をすぐにスローすることをお勧めします。

      次で指定:
      インターフェース FactoryBean<ContentNegotiationManager>getObject 
      戻り値:
      Bean のインスタンス (null にすることができます)
      関連事項:
    • getObjectType

      public ClassSE<?> getObjectType()
      インターフェースからコピーされた説明: FactoryBean
      この FactoryBean が作成するオブジェクトの型、または事前に不明な場合は null を返します。

      これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。

      シングルトンオブジェクトを作成している実装の場合、このメソッドはシングルトンの作成を可能な限り回避しようとします。むしろ、事前に型を推定する必要があります。プロトタイプの場合、ここで意味のある型を返すこともお勧めします。

      このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。

      注意 : オートワイヤーは、ここで null を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。

      次で指定:
      インターフェース FactoryBean<ContentNegotiationManager>getObjectType 
      戻り値:
      この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は null 
      関連事項:
    • isSingleton

      public boolean isSingleton()
      インターフェースからコピーされた説明: FactoryBean
      このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?

      注意 : FactoryBean がシングルトンオブジェクトを保持することを示す場合、getObject() から返されたオブジェクトは所有 BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、true を返さないでください。

      FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。

      注意 false を返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張 SmartFactoryBean インターフェースの実装は、SmartFactoryBean.isPrototype() メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンな FactoryBean 実装は、isSingleton() 実装が false を返す場合、常に独立したインスタンスを返すと単純に想定されます。

      FactoryBean は通常シングルトンインスタンスを管理するため、デフォルトの実装は true を返します。

      次で指定:
      インターフェース FactoryBean<ContentNegotiationManager>isSingleton 
      戻り値:
      公開されたオブジェクトがシングルトンかどうか
      関連事項: