クラス Jackson2ObjectMapperFactoryBean

java.lang.ObjectSE
org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean
実装されたすべてのインターフェース:
AwareBeanClassLoaderAwareFactoryBean<ObjectMapper>InitializingBeanApplicationContextAware

public class Jackson2ObjectMapperFactoryBean extends ObjectSE implements FactoryBean<ObjectMapper>, BeanClassLoaderAware, ApplicationContextAware, InitializingBean
setter を使用して Jackson 2.x ObjectMapper(デフォルト)または XmlMappercreateXmlMapper プロパティを true に設定)を作成するための FactoryBean は、XML 構成内から Jackson 機能を有効または無効にします。

Jackson のデフォルトプロパティを次のようにカスタマイズします。

MappingJackson2HttpMessageConverter の使用例:

 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
   <property name="objectMapper">
     <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
       p:autoDetectFields="false"
       p:autoDetectGettersSetters="false"
       p:annotationIntrospector-ref="jaxbAnnotationIntrospector" />
   </property>
 </bean>

MappingJackson2JsonView の使用例:

 <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
   <property name="objectMapper">
     <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
       p:failOnEmptyBeans="false"
       p:indentOutput="true">
       <property name="serializers">
         <array>
           <bean class="org.mycompany.MyCustomSerializer" />
         </array>
       </property>
     </bean>
   </property>
 </bean>

特定の setter が提供されていない場合(まれに使用されるオプションの場合)でも、より一般的な方法 setFeaturesToEnable(java.lang.Object...) および setFeaturesToDisable(java.lang.Object...) を使用できます。

 <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
   <property name="featuresToEnable">
     <array>
       <util:constant static-field="com.fasterxml.jackson.databind.SerializationFeature.WRAP_ROOT_VALUE"/>
       <util:constant static-field="com.fasterxml.jackson.databind.SerializationFeature.CLOSE_CLOSEABLE"/>
     </array>
   </property>
   <property name="featuresToDisable">
     <array>
       <util:constant static-field="com.fasterxml.jackson.databind.MapperFeature.USE_ANNOTATIONS"/>
     </array>
   </property>
 </bean>

また、次の既知のモジュールがクラスパスで検出された場合、自動的に登録します。

Jackson の ObjectMapper をカスタム Module で構成する場合は、setModulesToInstall(java.lang.Class<? extends com.fasterxml.jackson.databind.Module>...) を介してクラス名でこのようなモジュールを 1 つ以上登録できます。

 <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
   <property name="modulesToInstall" value="myapp.jackson.MySampleModule,myapp.jackson.MyOtherModule"/>
 </bean>
導入:
3.2
作成者:
Dmitry Katsubo, Rossen Stoyanchev, Brian Clozel, Juergen Hoeller, Tadaya Tsuyukubo, Sebastien Deleuze
  • コンストラクターの詳細

    • Jackson2ObjectMapperFactoryBean

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

    • setObjectMapper

      public void setObjectMapper(ObjectMapper objectMapper)
      使用する ObjectMapper インスタンスを設定します。設定しない場合、ObjectMapper はデフォルトのコンストラクターを使用して作成されます。
    • setCreateXmlMapper

      public void setCreateXmlMapper(boolean createXmlMapper)
      true に設定し、カスタム ObjectMapper が設定されていない場合、デフォルトのコンストラクターを使用して XmlMapper が作成されます。
      導入:
      4.1
    • setFactory

      public void setFactory(JsonFactory factory)
      ObjectMapper インスタンスの作成に使用される JsonFactory を定義します。
      導入:
      5.0
    • setDateFormat

      public void setDateFormat(DateFormatSE dateFormat)
      指定された DateFormatSE で日付 / 時刻の形式を定義します。

      メモ: このプロパティを設定すると、Jackson のスレッドセーフルールに従って、公開された ObjectMapper が非スレッドセーフになります。

      関連事項:
    • setSimpleDateFormat

      public void setSimpleDateFormat(StringSE format)
      SimpleDateFormatSE を使用して日付 / 時刻形式を定義します。

      メモ: このプロパティを設定すると、Jackson のスレッドセーフルールに従って、公開された ObjectMapper が非スレッドセーフになります。

      関連事項:
    • setLocale

      public void setLocale(LocaleSE locale)
      フォーマットに使用するデフォルトの LocaleSE をオーバーライドします。使用されるデフォルト値は Locale.getDefault() です。
      導入:
      4.1.5
    • setTimeZone

      public void setTimeZone(TimeZoneSE timeZone)
      フォーマットに使用するデフォルトの TimeZoneSE をオーバーライドします。使用されるデフォルト値は UTC です(ローカルタイムゾーンではありません)。
      導入:
      4.1.5
    • setAnnotationIntrospector

      public void setAnnotationIntrospector(AnnotationIntrospector annotationIntrospector)
      シリアライゼーションとデシリアライゼーションの両方に AnnotationIntrospector を設定します。
    • setPropertyNamingStrategy

      public void setPropertyNamingStrategy(PropertyNamingStrategy propertyNamingStrategy)
      PropertyNamingStrategy を指定して、ObjectMapper を構成します。
      導入:
      4.0.2
    • setDefaultTyping

      public void setDefaultTyping(TypeResolverBuilder<?> typeResolverBuilder)
      Jackson のデフォルトの入力に使用する TypeResolverBuilder を指定します。
      導入:
      4.2.2
    • setSerializationInclusion

      public void setSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include serializationInclusion)
      直列化のカスタム包含戦略を設定します。
      関連事項:
      • JsonInclude.Include
    • setFilters

      public void setFilters(FilterProvider filters)
      @JsonFilter アノテーション付き POJO をサポートするために使用するグローバルフィルターを設定します。
      導入:
      4.2
      関連事項:
    • setMixIns

      public void setMixIns(MapSE<ClassSE<?>,ClassSE<?>> mixIns)
      指定されたクラスまたはインターフェースを補強するために使用するミックスインアノテーションを追加します。
      パラメーター:
      mixIns - アノテーションがキーとして効果的にオーバーライドされるターゲットクラス(またはインターフェース)と、アノテーションが値としてターゲットのアノテーションに「追加」されるミックスインクラス(またはインターフェース)を持つエントリのマップ。
      導入:
      4.1.2
      関連事項:
    • setSerializers

      public void setSerializers(JsonSerializer<?>... serializers)
      カスタムシリアライザーを構成します。各シリアライザーは、JsonSerializer.handledType() によって返される型用に登録されますが、null であってはなりません。
      関連事項:
    • setSerializersByType

      public void setSerializersByType(MapSE<ClassSE<?>,JsonSerializer<?>> serializers)
      指定された型のカスタムシリアライザーを構成します。
      関連事項:
    • setDeserializers

      public void setDeserializers(JsonDeserializer<?>... deserializers)
      カスタムデシリアライザーを構成します。各デシリアライザは、JsonDeserializer.handledType() によって返される型に対して登録されますが、null であってはなりません。
      導入:
      4.3
      関連事項:
    • setDeserializersByType

      public void setDeserializersByType(MapSE<ClassSE<?>,JsonDeserializer<?>> deserializers)
      指定された型のカスタムデシリアライザーを構成します。
    • setAutoDetectFields

      public void setAutoDetectFields(boolean autoDetectFields)
      MapperFeature.AUTO_DETECT_FIELDS オプションのショートカット。
    • setAutoDetectGettersSetters

      public void setAutoDetectGettersSetters(boolean autoDetectGettersSetters)
    • setDefaultViewInclusion

      public void setDefaultViewInclusion(boolean defaultViewInclusion)
      MapperFeature.DEFAULT_VIEW_INCLUSION オプションのショートカット。
      導入:
      4.1
    • setFailOnUnknownProperties

      public void setFailOnUnknownProperties(boolean failOnUnknownProperties)
      DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES オプションのショートカット。
      導入:
      4.1.1
    • setFailOnEmptyBeans

      public void setFailOnEmptyBeans(boolean failOnEmptyBeans)
      SerializationFeature.FAIL_ON_EMPTY_BEANS オプションのショートカット。
    • setIndentOutput

      public void setIndentOutput(boolean indentOutput)
      SerializationFeature.INDENT_OUTPUT オプションのショートカット。
    • setDefaultUseWrapper

      public void setDefaultUseWrapper(boolean defaultUseWrapper)
      ラッパーがインデックス付き(リスト、配列)プロパティに使用されるかどうかを定義します(既定では使用されません(XmlMapper のみに適用されます))。
      導入:
      4.3
    • setFeaturesToEnable

      public void setFeaturesToEnable(ObjectSE... featuresToEnable)
      有効にする機能を指定します。
      関連事項:
    • setFeaturesToDisable

      public void setFeaturesToDisable(ObjectSE... featuresToDisable)
      無効にする機能を指定します。
      関連事項:
    • setModules

      public void setModules(ListSE<Module> modules)
      ObjectMapper に登録するモジュールの完全なリストを設定します。

      メモ: これが設定されている場合、モジュールの検出は行われません -Jackson でも Spring でもありません(setFindModulesViaServiceLoader(boolean) を参照)。結果として、ここで空のリストを指定すると、あらゆる種類のモジュール検出が抑制されます。

      これまたは setModulesToInstall(java.lang.Class<? extends com.fasterxml.jackson.databind.Module>...) の両方ではなく、いずれかを指定します。

      導入:
      4.0
      関連事項:
    • setModulesToInstall

      @SafeVarargsSE public final void setModulesToInstall(ClassSE<? extends Module>... modules)
      ObjectMapper に登録する 1 つ以上のモジュールをクラス(または XML のクラス名)で指定します。

      ここで指定されたモジュールは、Spring による JSR-310 および Joda-Time の自動検出、または Jackson によるモジュールの検出(setFindModulesViaServiceLoader(boolean) を参照)後に登録され、最終的にそれらの構成をオーバーライドできます。

      これまたは setModules(java.util.List<com.fasterxml.jackson.databind.Module>) の両方ではなく、いずれかを指定します。

      導入:
      4.0.1
      関連事項:
    • setFindModulesViaServiceLoader

      public void setFindModulesViaServiceLoader(boolean findModules)
      クラスパス内の META-INF メタデータに基づいて、Jackson が JDK ServiceLoader を介して使用可能なモジュールを検索するかどうかを設定します。

      このモードが設定されていない場合、Spring の Jackson2ObjectMapperFactoryBean 自体は、クラスパス上で JSR-310 および Joda-Time サポートモジュールを見つけようとします。Java 8 および Joda-Time 自体がそれぞれ利用可能である場合。

      導入:
      4.0.1
      関連事項:
    • setBeanClassLoader

      public void setBeanClassLoader(ClassLoaderSE beanClassLoader)
      インターフェースからコピーされた説明: BeanClassLoaderAware
      Bean class loaderSE を Bean インスタンスに提供するコールバック。

      通常の Bean プロパティの設定、ただし InitializingBean's InitializingBean.afterPropertiesSet() メソッドやカスタム init-method などの初期化コールバックの前に呼び出さます。

      次で指定:
      インターフェース BeanClassLoaderAwaresetBeanClassLoader 
      パラメーター:
      beanClassLoader - 所有クラスローダー
    • setHandlerInstantiator

      public void setHandlerInstantiator(HandlerInstantiator handlerInstantiator)
      Jackson ハンドラー(JsonSerializerJsonDeserializerKeyDeserializerTypeResolverBuilder および TypeIdResolver)の構成をカスタマイズします。
      導入:
      4.1.3
      関連事項:
    • setApplicationContext

      public void setApplicationContext(ApplicationContext applicationContext)
      Jackson ハンドラー(JsonSerializerJsonDeserializerKeyDeserializerTypeResolverBuilderTypeIdResolver)をオートワイヤーするために、ビルダー ApplicationContext を設定します。
      次で指定:
      インターフェース ApplicationContextAwaresetApplicationContext 
      パラメーター:
      applicationContext - このオブジェクトによって使用される ApplicationContext オブジェクト
      導入:
      4.1.3
      関連事項:
    • afterPropertiesSet

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

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

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

      @Nullable public ObjectMapper getObject()
      シングルトン ObjectMapper を返します。
      次で指定:
      インターフェース FactoryBean<ObjectMapper>getObject 
      戻り値:
      Bean のインスタンス (null にすることができます)
      関連事項:
    • getObjectType

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

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

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

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

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

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