package r.kryo; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.pool.KryoFactory; import com.esotericsoftware.kryo.pool.KryoPool; import com.google.common.reflect.TypeToken; import com.google.inject.Provides; import ratpack.guice.ConfigurableModule; import javax.inject.Singleton; public class KryoSerializerModule extends ConfigurableModule<KryoSerializerModule.Config> { @Override protected void configure() { } @Provides @Singleton KryoPool provideKryoPool() { KryoFactory kryoFactory = new KryoFactory() { @Override public Kryo create() { Kryo kryo = new Kryo(); // configuration comes here return kryo; } }; // build pool with soft references KryoPool kryoPool = new KryoPool.Builder(kryoFactory).softReferences().build(); return kryoPool; } public static class Config { /** * Used to get kryo serializer configuration */ public static final TypeToken<Config> KRYO_SERIALIZER_CONFIG = TypeToken.of(Config.class); } }