Spring Boot Kafka: “The class *** is not in the trusted packages: [java.util, java.lang]”
在使用 Spring Boot 集成 Kafka 消息中间件时, 在将对象自动转变为对应的消息对象发送以及接受时遇到这个问题。这是由于 Spring 集成的 Kafka 在转换对象时对最想的序列化和反序列化的保护措施。在对应的配置文件中设置对应的生产者和消费者的对于序列化信赖包即可:
spring:
kafka:
# 生产者的键和值的序列化对象
producer:
key-serializer: org.springframework.kafka.support.serializer.JsonSerializer
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
# 配置生产者的 Json 序列化的可信赖包
properties:
spring:
json:
trusted:
packages: "org.graduate.service.Entity"
# 消费者的键和值的反序列化对象
consumer:
key-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
group-id: test-consumer-group
# 配置消费者的 Json 反序列化的可信赖包
properties:
spring:
json:
trusted:
packages: "org.graduate.service.Entity"
这里添加 org.graduate.service.Entity
为可信赖的包, 即可直接将该包下的所有类序列化为消息对象。