public class ContentNegotiationManagerFactoryBean extends ObjectSE implements FactoryBean<ContentNegotiationManager>, ServletContextAware, InitializingBean
ContentNegotiationManager
を作成し、ContentNegotiationStrategy
インスタンスで構成するファクトリ。このファクトリは、基礎となる戦略を構成するプロパティを提供します。以下の表は、プロパティ名、デフォルト設定、設定に役立つ戦略を示しています。
プロパティ Setter | デフォルト値 | 基礎戦略 | 有効または無効 |
---|---|---|---|
favorParameter | false | ParameterContentNegotiationStrategy | オフ |
favorPathExtension | false (5.3 現在) | PathExtensionContentNegotiationStrategy | オフ |
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 以降。パス拡張構成オプションの非推奨については、クラスレベルのメモを参照してください。このメソッドに代わるものはないため、5.2.x では 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, waitSE
public void setStrategies(@Nullable ListSE<ContentNegotiationStrategy> strategies)
注意 : このメソッドの使用は、デフォルトの固定された戦略セットをカスタマイズするこのクラスの他のすべての setter の使用と相互に排他的です。詳細については、クラスレベルのドキュメントを参照してください。
strategies
- 使用する戦略 public void setFavorParameter(boolean favorParameter)
media type mappings
を登録する必要があります。 デフォルトでは、これは false
に設定されています。
public void setParameterName(StringSE parameterName)
setFavorParameter(boolean)
がオンのときに使用するクエリパラメーター名を設定します。 デフォルトのパラメーター名は "format"
です。
@DeprecatedSE public void setFavorPathExtension(boolean favorPathExtension)
false
に設定する必要があります。5.3 では、デフォルトが false
に変更され、このプロパティの使用は不要になります デフォルトでは、これは false
に設定されています。この場合、パス拡張はコンテンツネゴシエーションに影響を与えません。
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 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()
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
public ContentNegotiationManager build()
ContentNegotiationManager
インスタンスを作成して初期化します。@Nullable public ContentNegotiationManager getObject()
FactoryBean
BeanFactory
と同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。
この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する FactoryBeanNotInitializedException
をスローします。
Spring 2.0 以降、FactoryBeans は null
オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、FactoryBeanNotInitializedException はスローされません。FactoryBean の実装では、必要に応じて FactoryBeanNotInitializedException 自体をすぐにスローすることをお勧めします。
FactoryBean<ContentNegotiationManager>
の getObject
null
にすることができます)FactoryBeanNotInitializedException
public ClassSE<?> getObjectType()
FactoryBean
null
を返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成している実装の場合、このメソッドはシングルトンの作成を可能な限り回避しようとします。むしろ、事前に型を推定する必要があります。プロトタイプの場合、ここで意味のある型を返すこともお勧めします。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで null
を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。
FactoryBean<ContentNegotiationManager>
の getObjectType
null
ListableBeanFactory.getBeansOfType(java.lang.Class<T>)
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
FactoryBean.getObject()
, SmartFactoryBean.isPrototype()