如何在.yml中提供多个可信包反序列化?

How to provide more than one trusted package to deserialization in .yml?

当我创建消费者并尝试反序列化对象时出现错误

Caused by: IllegalArgumentException: The class 'com.domain.project2.package2.SomeEvent' is not in the trusted packages: [java.util, java.lang, com.domain.project2.package1, com.domain.project2.package2]. If you belive this class is....

我的 .yml 配置:

spring:
  kafka:
    bootstrap-servers: localhost:9092
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.support.serializer.JsonSerializer
    consumer:
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.support.serializer.JsonDeserializer
    properties:
      spring:
        json:
          trusted:
            packages: 'com.domain.project2.package1, com.domain.project2.package2'

我猜你是说

spring:
  kafka:
    bootstrap-servers: localhost:9092
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
    consumer:
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
    properties:
      spring:
        json:
          trusted:
            packages: 'com.domain.project2.package1, com.domain.project2.package2'

因为您使用的是 Spring 解串器,而不是 apache JsonDeserializer

问题是逗号后面的space。

使用'com.domain.project2.package1,com.domain.project2.package2'.

我们应该trim the packages to remove extraneous spaces.