小编Bri*_*ian的帖子

是否可以禁用 spring-cloud-stream 对特定方法的功能绑定?

我有一个基于 Spring Boot 的库(使用 spring-data-mongo)来创建一个PersistentEntitiesbean。PersistentEntities碰巧实现了该Supplier<T>接口,因此 Spring Cloud Stream 功能绑定器正在创建与其的绑定。更具体地说,BeanFactoryAwareFunctionRegistry.discoverDefaultDefinitionIfNecessary发现它是类型为 的 bean Supplier

我们使用 Spring Cloud Streams Kafka 绑定器,因此 Spring 尝试将每个对象发布到它创建的 Kafka 主题。这会导致 JSON 序列化程序中出现无限递归问题:

2019-12-04 15:36:54.323错误1 --- [调度-1] osihLoggingHandler:org.springframework.messaging.MessagingException:无法调用方法;嵌套异常是 org.springframework.messaging.converter.MessageConversionException:无法编写 JSON:无限递归(StackOverflowError)(通过引用链:org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity["idProperty"] -> org. springframework.data.mongodb.core.mapping.CachingMongoPersistentProperty["owner"] -> org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity["idProperty"] -> org.springframework.data.mongodb.core.mapping。 CachingMongoPersistentProperty["owner"] -> org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity["idProperty"] -> org.springframework.data.mongodb.core.mapping.CachingMongoPercientProperty["owner"] -> org. springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity["idProperty"] -> org.springframework.data.mongodb.core.mapping.CachingMongoPersistentProperty["owner"] -> org.springframework.data.mongodb.core.mapping。 BasicMongoPersistentEntity["idProperty"] -> org.springframework.data.mongodb.core.mapping.CachingMongoPersistentProperty["owner"] -> org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity["idProperty"] -> org.springframework.data.mongodb.core.mapping springframework.data.mongodb.core.mapping.CachingMongoPersistentProperty[“所有者”] ...

有没有办法将我的 bean 从函数绑定中排除?使用这个库的项目没有使用 Spring Cloud Function,但我更愿意保留这种可能性。

作为参考,我的 bean 定义为:

@Bean
public PersistentEntities …
Run Code Online (Sandbox Code Playgroud)

java spring-cloud-stream spring-cloud-function

1
推荐指数
1
解决办法
5581
查看次数