Spring 4 を使用して、リソース (以下の例の A) に、REST 更新 (http put および patch) を使用するときに無視する必要があるプロパティがあるユースケースがあります。プロパティは、作成時にのみ値を持つことができます (http 投稿)。そのため、 createでのアンマーシャリングではそのプロパティを考慮する必要がありますが、 update では無視する必要があります。
public class A {
private String strOnCreateAndUpdate; //persist on both create and update
private String strOnCreateOnly; //only persist on create, never on update
//getters & setters
}
コントローラーで
@RestController
@RequestMapping(value="/a"
public class ControllerA {
@RequestMapping(method= RequestMethod.POST)
public void create(@Validated @RequestBody A req) {
//create the record
}
@RequestMapping(value="/{id}", method=RequestMethod.PUT)
public void update(@PathVariable Long id, @Validated @RequestBody A req) {
//Update the record by ignoring strOnCreateOnly
}
@RequestMapping(value="/{id}", method=RequestMethod.PATCH)
public void update(@PathVariable Long id, @RequestBody Map<String,Object> reqMap){
//Update the record by ignoring strOnCreateOnly
}
}
私が考えることができる 1 つの方法 (そして非常に洗練されていない方法) は、アンマーシャルを実行できるようにすることですが、更新メソッド内で strOnCreateOnly を手動で元の値に設定します。
しかし、Spring 4 と Jackson を使用して構成可能な方法はありますか (たとえば、注釈を使用し、非整列化からプロパティを無視するなど)? API の呼び出し元にエラーを送り返し、strOnCreateOnly の更新は許可されていないことを伝えても問題ありません。