我是Sping Boot 的新手,在我使用User模型时遇到了麻烦,我使用相同的模型来注册并返回响应给user。注册时,当然,我需要密码字段,当返回关于user的响应时,我不需要返回密码字段,因此,我尝试使用@JsonProperty(access = JsonProperty.Access.WRITE_ONLY),但是当我从数据库获取用户详细信息时,我仍然得到密码字段。我做错了什么?
package com.practice.todo.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@NotBlank
@Column(name = "name")
private String name;
@NotBlank
@Column(name = "email", unique = true)
@Pattern(regexp = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$", message = "Invalid Email Format")
private String email;
@NotBlank
@Size(min = 8)
@Column(name = "password")
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", email='" + email + '\'' + ", password='" + password + '\'' + '}';
}
}
字符串
1条答案
按热度按时间jv2fixgn1#
我刚刚检查了你的代码,它像预期的那样工作。
password
字段不包括在作为REST调用的响应返回的JSON字符串中。但是它仍然包含在日志中。这是因为你将它包含在
toString()
方法中。最好从那里删除它。