public class ContentNegotiationManagerFactoryBean extends ObjectSE implements FactoryBean<ContentNegotiationManager>, ServletContextAware, InitializingBean
ContentNegotiationManager を作成し、ContentNegotiationStrategy インスタンスで構成するファクトリ。このファクトリは、基礎となる戦略を構成するプロパティを提供します。以下の表は、プロパティ名、デフォルト設定、設定に役立つ戦略を示しています。
| プロパティ Setter | デフォルト値 | 基礎戦略 | 有効または無効 |
|---|---|---|---|
favorPathExtension | true | PathExtensionContentNegotiationStrategy | 使用可能 |
favorParameter | false | ParameterContentNegotiationStrategy | オフ |
ignoreAcceptHeader | false | HeaderContentNegotiationStrategy | 使用可能 |
defaultContentType | null | FixedContentNegotiationStrategy | オフ |
defaultContentTypeStrategy | null | ContentNegotiationStrategy | オフ |
または、上記の便利なビルダーメソッドの使用を回避し、setStrategies(List) を介して使用する正確な戦略を設定できます。
非推奨のメモ : 5.2.4 では、コンテンツネゴシエーションおよび RequestMappingHandlerMapping での同様の非推奨のリクエストマッピングにパス拡張を使用しないようにするために、favorPathExtension および ignoreUnknownPathExtensions は非推奨です。詳細については、課題 #24719 を参照してください。
OBJECT_TYPE_ATTRIBUTE| コンストラクターと説明 |
|---|
ContentNegotiationManagerFactoryBean() |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | addMediaType(StringSE key, MediaType mediaType) プログラムによる登録のための setMediaTypes(java.util.Properties) の代替。 |
void | addMediaTypes(MapSE<StringSE, MediaType> mediaTypes) プログラムによる登録のための setMediaTypes(java.util.Properties) の代替。 |
void | afterPropertiesSet() |
ContentNegotiationManager | build()ContentNegotiationManager インスタンスを作成して初期化します。 |
ContentNegotiationManager | getObject() このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。 |
ClassSE<?> | getObjectType() この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合は null を返します。 |
boolean | isSingleton() このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、 FactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか? |
void | setDefaultContentType(MediaType contentType) コンテンツ型がリクエストされない場合に使用するデフォルトのコンテンツ型を設定します。 |
void | setDefaultContentTypes(ListSE<MediaType> contentTypes) コンテンツ型がリクエストされない場合に使用するデフォルトのコンテンツ型を設定します。 |
void | setDefaultContentTypeStrategy(ContentNegotiationStrategy strategy) コンテンツ型がリクエストされていないときに使用するコンテンツ型を決定するために使用するカスタム ContentNegotiationStrategy を設定します。 |
void | setFavorParameter(boolean favorParameter) リクエストされたメディア型を判別するためにリクエストパラメーター(デフォルトでは "format" )を使用する必要があるかどうか。 |
void | setFavorPathExtension(boolean favorPathExtension) 使用すべきではありません。 5.2.4 以降。パス拡張構成オプションの非推奨については、クラスレベルのメモを参照してください。このメソッドに代わるものはないため、当面は false に設定するために引き続き使用する必要があります。5.3 では、false がデフォルトになると、このプロパティを使用する必要がなくなります。 |
void | setIgnoreAcceptHeader(boolean ignoreAcceptHeader) "Accept" リクエストヘッダーのチェックを無効にするかどうか。 |
void | setIgnoreUnknownPathExtensions(boolean ignore) 使用すべきではありません。 5.2.4 現在。パス拡張設定オプションの廃止に関するクラスレベルの注意を参照してください。 |
void | setMediaTypes(PropertiesSE mediaTypes) キーから MediaType へのマッピングを追加します。キーは小文字に正規化され、パス拡張子、ファイル名拡張子から抽出されたか、クエリパラメーターとして渡された可能性があります。 |
void | setParameterName(StringSE parameterName)setFavorParameter(boolean) がオンのときに使用するクエリパラメーター名を設定します。 |
void | setServletContext(ServletContextEE servletContext)ServletContext を挿入するために Spring によって呼び出されます。 |
void | setStrategies(ListSE<ContentNegotiationStrategy> strategies) 使用する戦略の正確なリストを設定します。 |
void | setUseJaf(boolean useJaf) 使用すべきではありません。 5.0 以降、 setUseRegisteredExtensionsOnly(boolean) が優先されます。 |
void | setUseRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly)favorPathExtension または setFavorParameter(boolean) が設定されている場合、このプロパティは、登録された MediaType マッピングのみを使用するか、動的な解決を許可するかを決定します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic void setStrategies(@Nullable ListSE<ContentNegotiationStrategy> strategies)
注意 : このメソッドの使用は、デフォルトの固定された戦略セットをカスタマイズするこのクラスの他のすべての setter の使用と相互に排他的です。詳細については、クラスレベルのドキュメントを参照してください。
strategies - 使用する戦略 @DeprecatedSE public void setFavorPathExtension(boolean favorPathExtension)
false に設定するために引き続き使用する必要があります。5.3 で false がデフォルトになると、このプロパティを使用する必要がなくなります。 デフォルトでは、これは true に設定されます。その場合、/hotels.pdf のリクエストは、"Accept" ヘッダーに関係なく "application/pdf" のリクエストとして解釈されます。
public void setMediaTypes(PropertiesSE mediaTypes)
path extension strategy が ServletContext.getMimeType(java.lang.String)EE および MediaTypeFactory を介したルックアップにフォールバックできる一方で、parameter strategy は機能するためにそのようなマッピングを必要とします。
注意 : ここで登録されたマッピングは、ContentNegotiationManager.getMediaTypeMappings() を介してアクセスでき、パラメーターおよびパス拡張戦略だけでなく使用できます。例: Spring MVC 構成を使用します。例: @EnableWebMvc または <mvc:annotation-driven>、メディア型マッピングもプラグインされています:
ResourceHttpRequestHandler で提供される静的リソースのメディア型を決定します。ContentNegotiatingViewResolver でレンダリングされたビューのメディア型を決定します。mediaTypes - メディア型のマッピング addMediaType(String, MediaType), addMediaTypes(Map)public void addMediaType(StringSE key, MediaType mediaType)
setMediaTypes(java.util.Properties) の代替。public void addMediaTypes(@Nullable MapSE<StringSE,MediaType> mediaTypes)
setMediaTypes(java.util.Properties) の代替。@DeprecatedSE public void setIgnoreUnknownPathExtensions(boolean ignore)
false に設定すると、一致するものがなければ HttpMediaTypeNotAcceptableException になります。 デフォルトでは、これは true に設定されています。
@DeprecatedSE public void setUseJaf(boolean useJaf)
setUseRegisteredExtensionsOnly(boolean) を使用してください。public void setUseRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly)
favorPathExtension または setFavorParameter(boolean) が設定されている場合、このプロパティは、登録された MediaType マッピングのみを使用するか、動的な解決を許可するかを決定します。MediaTypeFactory 経由。デフォルトではこれは設定されておらず、動的解決がオンになっています。
public void setFavorParameter(boolean favorParameter)
media type mappings を登録する必要があります。 デフォルトでは、これは false に設定されています。
public void setParameterName(StringSE parameterName)
setFavorParameter(boolean) がオンのときに使用するクエリパラメーター名を設定します。 デフォルトのパラメーター名は "format" です。
public void setIgnoreAcceptHeader(boolean ignoreAcceptHeader)
デフォルトでは、この値は false に設定されています。
public void setDefaultContentType(MediaType contentType)
デフォルトでは、これは設定されていません。
public void setDefaultContentTypes(ListSE<MediaType> contentTypes)
デフォルトでは、これは設定されていません。
public void setDefaultContentTypeStrategy(ContentNegotiationStrategy strategy)
ContentNegotiationStrategy を設定します。デフォルトでは、これは設定されていません。
public void setServletContext(ServletContextEE servletContext)
ServletContextAware の setServletContext servletContext - このオブジェクトによって使用される ServletContext オブジェクト InitializingBean.afterPropertiesSet(), ApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)public void afterPropertiesSet()
InitializingBeanBeanFactoryAware、ApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean の afterPropertiesSet public ContentNegotiationManager build()
ContentNegotiationManager インスタンスを作成して初期化します。@Nullable public ContentNegotiationManager getObject()
FactoryBeanBeanFactory と同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。
この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する FactoryBeanNotInitializedException をスローします。
Spring 2.0 以降、FactoryBeans は null オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、FactoryBeanNotInitializedException はスローされません。FactoryBean の実装では、必要に応じて FactoryBeanNotInitializedException 自体をすぐにスローすることをお勧めします。
FactoryBean<ContentNegotiationManager> の getObject null にすることができます)FactoryBeanNotInitializedExceptionpublic ClassSE<?> getObjectType()
FactoryBeannull を返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成している実装の場合、このメソッドはシングルトンの作成を可能な限り回避しようとします。むしろ、事前に型を推定する必要があります。プロトタイプの場合、ここで意味のある型を返すこともお勧めします。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで null を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。
FactoryBean<ContentNegotiationManager> の getObjectType null ListableBeanFactory.getBeansOfType(java.lang.Class<T>)public boolean isSingleton()
FactoryBeanFactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか? 注意 : FactoryBean がシングルトンオブジェクトを保持することを示す場合、getObject() から返されたオブジェクトは所有 BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、true を返さないでください。
FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
注意 : false を返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張 SmartFactoryBean インターフェースの実装は、SmartFactoryBean.isPrototype() メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンな FactoryBean 実装は、isSingleton() 実装が false を返す場合、常に独立したインスタンスを返すと単純に想定されます。
FactoryBean は通常シングルトンインスタンスを管理するため、デフォルトの実装では true が返されます。
FactoryBean<ContentNegotiationManager> の isSingleton FactoryBean.getObject(), SmartFactoryBean.isPrototype()