我想在Spring Boot Rest Controller中使用自己的解串器。要完成其工作,它需要一些自定义配置-作为构造函数参数提供给它。如何在rest控制器中传递这样的参数?
这里是例子。
DTO(带有一些龙目岛注释):
@Getter
@Setter
@RequiredArgsConstructor
@AllArgsConstructor
@JsonDeserialize(using = Deserializer.class)
public class DTO {
private int a;
private int b;
}
反序列化器:
public class Deserializer extends JsonDeserializer<DTO> {
//custom config
int val;
public Deserializer(int value) {
val = value;
}
@Override
public DTO deserialize(JsonParser p, DeserializationContext ctxt) throws IOException{
JsonNode node = p.readValueAsTree();
int a = node.has("a") ? node.get("a").asInt() : -1;
int b = node.has("b") ? node.get("b").asInt() : -1;
//custom config usage
return new DTO(a + val, b + val);
}
}
控制器:
@RestController
@RequestMapping
public class Controller {
//how to pass `val` into deserializer of DTO object?
@PostMapping("/foo")
DTO foo(@RequestBody DTO dto) {
return dto;
}
}
任何帮助将不胜感激。
答案 0 :(得分:1)
您可以创建一个自定义ObjectMapper并将自定义序列化器添加到其中,并同时从application.properties中加载自定义值。
我认为这应该行得通,是从我的头上写出来的。
this.slides.map((slide, index) => {
return (
<Carousel.Item>
<Row className="item-container carousel-item d-flex flex-xl-column flex-wrap">
{
slide.map(category => { // slide is not defined
return (
<Col className="px-2 category__card" xl={category.xl} md={category.md}>
<Card className="p-2" style={category.style}>
<Card.Body>
<Card.Title className="text-white font-weight-normal text-uppercase ">
<h4>
category.title}
</h4>
</Card.Title>
<Button variant="light rounded-0" >View Products</Button>
</Card.Body>
<div className="card-image-cont">
<Card.Img src={category.img} className="card-image"/>
</div>
</Card>
</Col>
);
})
}
</Row>
</Carousel.Item>
)})