Spring Boot之驗證模組應用總結2
DAO的驗證模組
對於Entity實體來說,同樣可以基於validation註解來定義相關的驗證邏輯。本節將通過相關示例來介紹如何使用這些註解簡化日常的開發工作。
Entity定義
在Maven檔案中引入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
定義測試Entity:
@Entity
@Data
public class ProductEntity {
@Id
@GeneratedValue
private Long id;
//限購:1~5
@Min(value = 1, message = "min Value is above zero")
@Max(value = 10, message = "最大值不超過10")
private int count;
@Pattern(regexp = "^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$", message = "不符合IP規則")
private String ipAddr;
@Email(message = "email format error")
@NotBlank
private String email;
@NotBlank(message = "name 不能為空")
@Length(min=5, max = 10, message = "name長度在5到10個字元之間")
private String name;
}
在這個entity中,使用了不同註解針對這些欄位進行驗證,並自定義了相關的提示資訊。
在Spring Boot的DAO中,預設驗證是開啟的。如果要關閉驗證邏輯,則需要將Spring Boot開關在配置檔案中關閉,具體設定如下:
spring.jpa.properties.javax.persistence.validation.mode=none
單元測試
為了進行單元測試,首先需要將相關依賴加到專案中:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
此為轉為進行資料測試的H2測試資料庫。
測試程式碼:
@RunWith(SpringRunner.class)
@DataJpaTest
public class ProductEntityValidTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private ProductRepository productRepository;
@Test(expected=ConstraintViolationException.class)
public void testEntityInValidation() {
ProductEntity product = badRequest();
this.productRepository.save(product);
//進行重新整理之後,方可觸發實際的validation邏輯檢查
this.productRepository.flush();
}
@Test
public void testEntityValidation() {
ProductEntity product = goodProduct();
this.productRepository.save(product);
//進行重新整理之後,方可觸發實際的validation邏輯檢查
this.productRepository.flush();
}
private ProductEntity badRequest() {
ProductEntity product = new ProductEntity();
product.setCount(12);
product.setEmail("add");
product.setIpAddr("12.33.");
product.setName("abc");
return product;
}
private ProductEntity goodProduct() {
ProductEntity product = new ProductEntity();
product.setName("zhangds");
product.setCount(9);
product.setEmail("abc@12.cn");
product.setIpAddr("3.3.4.4");
return product;
}
}
即可進行正常的功能驗證操作。
總結
在Entity這層進行驗證,非常的簡單,不需要進行大量冗餘的邏輯程式碼驗證,可以節省大量的開發工作量。
相關文章
- Spring Boot之輸入Bean驗證@Valid應用場景總結Spring BootBean
- 使用 JWT 身份驗證保護你的 Spring Boot 應用JWTSpring Boot
- Spring Boot之單元測試用例總結Spring Boot
- Spring總結--配置驗證碼Spring
- 五、Spring Boot整合Spring Security之認證流程2Spring Boot
- Spring Boot之Validation自定義實現總結Spring Boot
- Spring Boot使用JWT進行token驗證Spring BootJWT
- Spring Boot + JPA學習總結Spring Boot
- Spring Boot 配置檔案總結Spring Boot
- Spring Boot (十九):使用 Spring Boot Actuator 監控應用Spring Boot
- 玩轉spring boot——AOP與表單驗證Spring Boot
- 專案總結之應用XP
- Spring Boot+Mybatis專案總結Spring BootMyBatis
- Spring boot常用命令總結Spring Boot
- js各種驗證總結JS
- JS函式驗證總結JS函式
- spring boot(三)web模組Spring BootWeb
- 後端應用分層經驗總結後端
- 玩轉spring boot——MVC應用Spring BootMVC
- Spring Boot單元測試之服務層測試總結Spring Boot
- Spring Security OAuth2之resource_id配置與驗證SpringOAuth
- Spring boot 生成動態驗證碼並前後端校驗Spring Boot後端
- spring boot應用之spring mvc應用書目錄Spring BootMVC
- Spring Boot 之路(一):一個簡單的Spring Boot應用Spring Boot
- Spring Boot 2 + Spring Security 5 + JWT 的單頁應用Restful解決方案Spring BootJWTREST
- 交叉驗證(Cross validation)總結ROS
- spring boot 利用註解實現許可權驗證Spring Boot
- spring boot整合cassandra 連線帶安全驗證的方式Spring Boot
- Spring Boot中實現輸入引數驗證教程Spring Boot
- spring-boot-route(十八)spring-boot-adtuator監控應用Springboot
- Spring boot應用如何支援httpsSpring BootHTTP
- Spring Boot應用程式有哪些功能?Spring Boot
- 如何預熱Spring Boot應用? - sebsteinSpring Boot
- Spring Boot應用監控實戰Spring Boot
- Spring Boot 應用程式中的 QueryDSLSpring Boot
- booststrap select2的應用總結
- Spring Boot Actuator詳解與深入應用(二):Actuator 2.xSpring Boot
- Spring Boot引起的“堆外記憶體洩漏”排查及經驗總結Spring Boot記憶體