Spring Boot如何在不使用setter的情况下反对象化?

问题描述 投票:0回答:1

我对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进行请求时,属性已成功反序列化。

java spring spring-boot deserialization lombok
1个回答
0
投票

Lombok @Builder注释会在目标的每个参数上生成类似setter的方法。

您可以在此处阅读更多详细信息https://projectlombok.org/features/Builder

© www.soinside.com 2019 - 2024. All rights reserved.