我有一个Spring Boot Library软件包common-library
,其中包含一个DTO类,如OrderDTO
[package-com.example.common.dto
]。
我有两个微服务——Core
&Notification
服务。在Core
服务中,我在com.example.core.domain
包中有Order
类。
在Notification
服务中,我添加了common-library
外部依赖并创建了@FeignClient
类
import com.example.common.dto.OrderDTO;
@FeignClient(name = "core")
public class CoreServiceClient {
@GetMapping("/api/v1/order/get/{id})
OrderDTO getOrderById(@PathVariable("id") String id);
}
现在当我从通知服务调用getOrderById
方法,我得到以下错误
InvalidTypeIdException: "Could not resolve type id 'com.example.core.domain.Order' as a subtype of `com.example.common.dto.OrderDTO`: no such class found"
现在我知道解决这个问题的一个简单方法是在com.example.core.domain
包中创建匹配类Order
。
但是我想知道是否有任何不需要创建相同类的解决方案
我找到了问题所在。我正在添加MappingJackson2HttpMessageConverter
使用ObjectMapper
bean作为构造函数参数
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(0, new MappingJackson2HttpMessageConverter(objectMapper()));
}
序列化响应中的数据类型信息。删除objectMapper()
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(0, new MappingJackson2HttpMessageConverter());
}