Spring boot 利用Javax進行群組約束
一、目的:
利用javax進行群組約束,達到驗證請求欄位之驗測。
Grouping Javax Validation Constraints
二、建置環境:
- Spring boot 2.4.1
- Maven
- java 8
三、開發工具
- IntelliJ idea
四、專案架構
五、步驟
- 添加依賴
pom.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.17.Final</version>
</dependency>
- 在Request中添加驗證群組
MemberReq.java
import com.docker.image.model.dto.common.ReqView;
import com.fasterxml.jackson.annotation.JsonView;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class MemberReq {
public interface ValidatorUpdateName {}
public interface ValidatorGet {}
public interface ValidatorAdd {}
@JsonView(ReqView.MemberId.class)
@NotNull(groups = {ValidatorUpdateName.class,ValidatorGet.class})
private Integer id;
@JsonView(ReqView.MemberName.class)
@NotNull(groups = {ValidatorUpdateName.class,ValidatorAdd.class})
private String name;
@JsonView(ReqView.Member.class)
@NotNull(groups = {ValidatorAdd.class})
private String password;
}
3.資料處理層
MemberServiceImpl.java
public MemberRes updateName(MemberReq memberReq){
Member member = memberRepository.findById(memberReq.getId()).get();
member.setName(memberReq.getName());
memberRepository.save(member);
return ObjectUtils.mapDaoToDtoWithView(member, MemberRes.class,ResView.Member.class);
}
- controller添加驗證機制
MemberController.java
@PutMapping(value = "/update")
@JsonView(ResView.MemberName.class)
public MemberRes updateName(
@Validated({MemberReq.ValidatorUpdateName.class})
@RequestBody MemberReq memberReq){
return memberService.updateName(memberReq);
}
-
完成驗證機制
若是Request中有欄位不符合規定,即報錯。 -
成功!