我对POST中请求的行为感到好奇,我向我的API发送了一个请求,该API接收到一个User对象。该对象用lombok @Builder和@Getter注释。我不明白的是Spring Boot如何在不使用setter的情况下反序列化对象?
User.java:
@Builder
@Entity
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NotEmpty
private String name;
@NotEmpty
private String email;
@NotEmpty
private String password;
}
UserRestService.java:
@RestController
@AllArgsConstructor
@ExposesResourceFor(User.class)
public class UserRestService {
private final UserCommand userCommand;
@PostMapping(path = "/user")
public User create(@RequestBody User user) {
return userCommand.create(user);
}
}
我注意到的一件事是,当我在User类上没有@Getter的情况下执行请求时,属性未反序列化,但是当我使用@Getter进行请求时,属性已成功反序列化。
Lombok @Builder注释会在目标的每个参数上生成类似setter的方法。
您可以在此处阅读更多详细信息https://projectlombok.org/features/Builder