diff --git a/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/CacheClient.java b/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/CacheClient.java index 5338c7a..d8ecc49 100644 --- a/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/CacheClient.java +++ b/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/CacheClient.java @@ -2,10 +2,12 @@ package io.refectoring.cache.embedded; import com.hazelcast.config.Config; import com.hazelcast.config.MapConfig; +import com.hazelcast.config.SerializerConfig; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.map.IMap; import io.refectoring.cache.embedded.rest.Car; +import io.refectoring.cache.embedded.serializer.CarSerializer; import org.springframework.stereotype.Component; @Component @@ -27,9 +29,16 @@ public class CacheClient { public Config createConfig() { Config config = new Config(); config.addMapConfig(mapConfig()); + config.getSerializationConfig().addSerializerConfig(serializerConfig()); return config; } + private SerializerConfig serializerConfig() { + return new SerializerConfig() + .setImplementation(new CarSerializer()) + .setTypeClass(Car.class); + } + private MapConfig mapConfig() { MapConfig mapConfig = new MapConfig(CARS); mapConfig.setTimeToLiveSeconds(360); diff --git a/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/rest/Car.java b/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/rest/Car.java index be0500a..19674c2 100644 --- a/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/rest/Car.java +++ b/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/rest/Car.java @@ -5,13 +5,11 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.io.Serializable; - @Data @Builder @NoArgsConstructor @AllArgsConstructor -public class Car implements Serializable { +public class Car { private String number; private String name; } diff --git a/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/serializer/CarSerializer.java b/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/serializer/CarSerializer.java new file mode 100644 index 0000000..e98c150 --- /dev/null +++ b/spring-boot/hazelcast/hazelcast-embedded-cache/src/main/java/io/refectoring/cache/embedded/serializer/CarSerializer.java @@ -0,0 +1,30 @@ +package io.refectoring.cache.embedded.serializer; + +import com.hazelcast.nio.ObjectDataInput; +import com.hazelcast.nio.ObjectDataOutput; +import com.hazelcast.nio.serialization.StreamSerializer; +import io.refectoring.cache.embedded.rest.Car; + +import java.io.IOException; + +public class CarSerializer implements StreamSerializer { + + @Override + public void write(ObjectDataOutput out, Car object) throws IOException { + out.writeUTF(object.getName()); + out.writeUTF(object.getNumber()); + } + + @Override + public Car read(ObjectDataInput in) throws IOException { + return Car.builder() + .name(in.readUTF()) + .number(in.readUTF()) + .build(); + } + + @Override + public int getTypeId() { + return 1; + } +}