在问这个问题之前,我已经阅读了该线程,但是这是一个相当老的线程,并且现在有许多用于反序列化实体的新方法。
我的第一个问题是,为什么我们不应该在Controller中使用实体?如果唯一的原因是浪费的数据通过网络传输,那应该不成问题,因为有避免这种情况的方法。
我正在使用flexjson.JSONSerializer来反序列化实体,并使用Gson.fromJSON()来将json序列化为实体,而不是使用DTO。我的控制器代码如下所示。
@RequestMapping (value = "", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public void createStream(@RequestBody String streamData) {
StreamEntity streamEntity = null;
try {
streamEntity = streamService.createStream(streamData);
logger.info("Created Stream [id=%s, name=%s]", streamEntity.getId(), streamEntity.getStreamName());
} catch (Exception e) {
logger.info("Error occured while creating the stream[name=%s]: %s",streamEntity.getStreamName(), e.getMessage());
}
}
@RequestMapping (value = "/{id}", method = RequestMethod.GET)
public String fetchStream(@PathVariable(value = "id")final Long id) {
StreamEntity streamEntity = streamDAO.getById(id);
String json = StreamEntitySerializer.serialize(streamEntity);
return json;
}
Run Code Online (Sandbox Code Playgroud)
在控制器中使用实体的唯一目的是记录日志。代码有什么错误/令人反感吗?