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 | オフ |
5.0 の時点で、setStrategies(List)
を使用して正確な戦略を設定できます。
注意 : URL ベースのコンテンツ型の解決を使用する必要がある場合、クエリパラメーターの使用は、パス拡張の使用よりも簡単であり、後者は URI 変数、パスパラメーター、URI デコードで課題を引き起こす可能性があるためです。setFavorPathExtension(boolean)
を false に設定するか、そうでなければ setStrategies(List)
を介して明示的に使用する戦略を設定することを検討してください。
コンストラクターと説明 |
---|
ContentNegotiationManagerFactoryBean() |
修飾子と型 | メソッドと説明 |
---|---|
void | addMediaType(StringSE fileExtension, MediaType mediaType) Java コードで使用する setMediaTypes(java.util.Properties) の代替。 |
void | addMediaTypes(MapSE<StringSE, MediaType> mediaTypes) Java コードで使用する 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) リクエストされたメディア型を判別するために、URL パスのパス拡張子を使用する必要があるかどうか。 |
void | setIgnoreAcceptHeader(boolean ignoreAcceptHeader) "Accept" リクエストヘッダーのチェックを無効にするかどうか。 |
void | setIgnoreUnknownPathExtensions(boolean ignore) どのメディア型にも解決できないパス拡張子を持つリクエストを無視するかどうか。 |
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 setFavorPathExtension(boolean favorPathExtension)
デフォルトでは、これは true
に設定されます。その場合、/hotels.pdf
のリクエストは、"Accept" ヘッダーに関係なく "application/pdf"
のリクエストとして解釈されます。
public void setMediaTypes(PropertiesSE mediaTypes)
パス拡張戦略は、ServletContext.getMimeType(java.lang.String)
EE および MediaTypeFactory
を使用してパス拡張を解決しようとします。
mediaTypes
- メディア型のマッピング addMediaType(String, MediaType)
, addMediaTypes(Map)
public void addMediaType(StringSE fileExtension, MediaType mediaType)
setMediaTypes(java.util.Properties)
の代替。public void addMediaTypes(@Nullable MapSE<StringSE,MediaType> mediaTypes)
setMediaTypes(java.util.Properties)
の代替。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()
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()