Java 2个不同配置的控制器
是否有可能在Springboot中有两个不同的@restcontroller使用不同的映射Jackson2HttpMessageConverter。。。或者MappingJackson2HttpMessageConverter对于spring引导应用程序中的所有@RestController都是通用的 基本上,目标是使用不同的MappingJackson2HttpMessageConverter,其中包含不同的Jackson对象映射器,该映射器使用Jackson MixIn将第二个控制器中的id重命名为priceId(在Json中) 对第一个控制器的调用将执行以下操作: {id:“id”,description:“description”} 调用第二个控制器将执行以下操作: {priceId:“id”,description:“description”} 问候Java 2个不同配置的控制器,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,是否有可能在Springboot中有两个不同的@restcontroller使用不同的映射Jackson2HttpMessageConverter。。。或者MappingJackson2HttpMessageConverter对于spring引导应用程序中的所有@RestController都是通用的 基本上,目标是使用不同的MappingJackson2HttpMessageConverter,其中包含不同的Jackson对象映射器,该映射器使用Jackson MixIn将第二个控制器中的id
@SpringBootApplication
public class EndpointsApplication {
public static void main(String[] args) {
SpringApplication.run(EndpointsApplication.class, args);
}
@Data // Lombok
@AllArgsConstructor
class Price {
String id;
String description;
}
@RestController
@RequestMapping(value = "/controller1")
class PriceController1 {
@GetMapping(value = "/price")
public Price getPrice() {
return new Price("id", "Description");
}
}
@RestController
@RequestMapping(value = "/controller2")
class PriceController2 {
@GetMapping(value = "/price")
public Price getPrice() {
return new Price("id", "Description");
}
}
}
GitHub:
映射Jackson2HttpMessageConverter对于使用
@RestController
注释的所有控制器来说都是通用的,但是有一些方法可以解决这个问题。一种常见的解决方案是将控制器返回的结果包装到标记类中,并使用自定义MessageConverter
和/或使用自定义响应媒体类型
TypeConstrainedMappingJackson2HttpMessageConverter的示例用法,其中ResourceSupport
是标记类
MappingJackson2HttpMessageConverter halConverter =
new TypeConstrainedMappingJackson2HttpMessageConverter(ResourceSupport.class);
halConverter.setSupportedMediaTypes(Arrays.asList(HAL_JSON));
halConverter.setObjectMapper(halObjectMapper);
您可以在此处找到基于代码的工作示例:
可以为您的Price
传输对象使用自定义序列化程序,而不是使用PropertyNamingStrategy
。请看这篇文章。