SerializerFactory
Date: 2016-12-04

com.fasterxml.jackson.databind.ser

## Class SerializerFactory

- java.lang.Object
- - com.fasterxml.jackson.databind.ser.SerializerFactory

- Direct Known Subclasses:
    BasicSerializerFactory

      public abstract class SerializerFactory
      extends java.lang.Object

  Abstract class that defines API used by `SerializerProvider` to obtain actual `JsonSerializer` instances from multiple distinct factories.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SerializerFactory()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract JsonSerializer<java.lang.Object>` | `createKeySerializer(SerializationConfig config, JavaType type, JsonSerializer<java.lang.Object> defaultImpl)` Method called to create serializer to use for serializing JSON property names (which must be output as `JsonToken.FIELD_NAME`) for Map that has specified declared key type, and is for specified property (or, if property is null, as root value)
    `abstract JsonSerializer<java.lang.Object>` | `createSerializer(SerializerProvider prov, JavaType baseType)` Method called to create (or, for immutable serializers, reuse) a serializer for given type.
    `abstract TypeSerializer` | `createTypeSerializer(SerializationConfig config, JavaType baseType)` Method called to create a type information serializer for given base type, if one is needed.
    `abstract SerializerFactory` | `withAdditionalKeySerializers(Serializers additional)`
    `abstract SerializerFactory` | `withAdditionalSerializers(Serializers additional)` Convenience method for creating a new factory instance with additional serializer provider; equivalent to calling
    `abstract SerializerFactory` | `withSerializerModifier(BeanSerializerModifier modifier)` Convenience method for creating a new factory instance with additional bean serializer modifier; equivalent to calling

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SerializerFactory

          public SerializerFactory()

  - ### Method Detail

    - #### withAdditionalSerializers

          public abstract SerializerFactory withAdditionalSerializers(Serializers additional)

      Convenience method for creating a new factory instance with additional serializer provider; equivalent to calling

             withConfig(getConfig().withAdditionalSerializers(additional));

    - #### withAdditionalKeySerializers

          public abstract SerializerFactory withAdditionalKeySerializers(Serializers additional)

    - #### withSerializerModifier

          public abstract SerializerFactory withSerializerModifier(BeanSerializerModifier modifier)

      Convenience method for creating a new factory instance with additional bean serializer modifier; equivalent to calling

             withConfig(getConfig().withSerializerModifier(modifier));

    - #### createSerializer

          public abstract JsonSerializer<java.lang.Object> createSerializer(SerializerProvider prov,
                                                          JavaType baseType)
                                                                     throws JsonMappingException

      Method called to create (or, for immutable serializers, reuse) a serializer for given type.
      Parameters:
        `prov` - Provider that needs to be used to resolve annotation-provided serializers (but NOT for others)
      Throws:
        `JsonMappingException`
      Since:
        2.1 (earlier versions had method with different signature)

    - #### createTypeSerializer

          public abstract TypeSerializer createTypeSerializer(SerializationConfig config,
                                            JavaType baseType)
                                                       throws JsonMappingException

      Method called to create a type information serializer for given base type, if one is needed. If not needed (no polymorphic handling configured), should return null.
      Parameters:
        `baseType` - Declared type to use as the base type for type information serializer
      Returns:
        Type serializer to use for the base type, if one is needed; null if not.
      Throws:
        `JsonMappingException`

    - #### createKeySerializer

          public abstract JsonSerializer<java.lang.Object> createKeySerializer(SerializationConfig config,
                                                             JavaType type,
                                                             JsonSerializer<java.lang.Object> defaultImpl)
                                                                        throws JsonMappingException

      Method called to create serializer to use for serializing JSON property names (which must be output as `JsonToken.FIELD_NAME`) for Map that has specified declared key type, and is for specified property (or, if property is null, as root value)
      Parameters:
        `type` - Declared type for Map keys
        `defaultImpl` - Default key serializer implementation to use, if no custom ones are found (may be null)
      Returns:
        Serializer to use, if factory knows it; null if not (in which case default serializer is to be used)
      Throws:
        `JsonMappingException`