I'm working in a Spring Boot project, as my implement at the moment, almost for each API I have request and response classes.
For example:
@RequestMapping(value = "/notice", method = RequestMethod.POST)
public AddNoticeResponse addNotice(@Valid @RequestBody AddNoticeRequest){
Notice notice = ... // creating new notice from AddNoticeRequest
noticeRepository.save(notice);
AddNoticeResponse response = ... // creating new response instance from Notice
return response;
}
The request and response classes look like:
@Data
@AllArgsConstructor
public class AddNoticeRequest{
private String subject;
private String message;
private Long timeToLive;
}
// Ommiting some annotations for brevity
public class AddNoticeResponse{
private String subject;
private String message;
private Long timeToLive;
private Date createTime;
private String creator;
}
I have two problems.
- Creating too many classes and naming them some times made me nuts.
- Some request and response have common fields.
For example: There's two kind of Notice
: Email
and Notification
:
public class Email {
private String subject;
private String message;
private String receiver;
}
So, should I use an inner class that extends the common class or just put all the fields into one class? Which is better?
public class AddNoticeRequest {
private String subject;
private String message;
class Email extends AddNoticeRequest{
private String receiver;
}
}
public class AddNoticeRequest{
private String subject;
private String message;
private Long timeToLive;
private String receiver;
}
Then when the client performs a request to add an Email
notice, will some fields be null?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…