它能够在运行时动态生成getter,setter方法,以及equals()、hashCode()、toString()这些方法;

类级别的@Data注解就是由Lombok提供的,它会告诉Lombok生成所缺失的方法,同时还会生成所有以final属性作为参数的构造器。

IDEA使用Lombok必须要导入与IDEA版本号(启动时显示界面中有)完全匹配的包;

Eclipse导入成功后bin目录下会有lombok.jar的文件;

Spring tool suite右键单击pom.xml找到spring=>editstarters=>​​https://start.spring.io​​=>选择Lombok导入即可;

@slf4j(simple logging facade for java)这也是Lombok提供的注解;

相当于

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(DesignTacoController.class)

 

spring支持java的bean校验API(Bean validation API,也被称为JSR-303)。这样的话,我们就能够更容易声明校验规则,而不必在应用程序中显示编写声明逻辑。借助SpringBoot,要在项目中添加校验库,我们甚至不需要做任何特殊的操作。这是因为Validation API以及Validation API的Hibernate实现将会作为SpringBoot-Web-starter的传递性依赖自动添加到项目中。

声明校验规则

保证name属性不能为空或null,它使用@NotNull和@Size注解来声明这些校验规则

@Data
public class Taco{
@NotNull
@Size(min=5,message="Name must be at least 5 characters long")
private String name;
@Size(min=1,message="You must choose at least 1 ingredient")
private List<String> ingredients;
@NotBlack(message="Street is required")
private String street;
@CreditCardNumber(message="Not a valid credit card number") //合法的信用卡号码
private String ccNumber;

@Pattern(regexp="^(0[1-9]|1[0-2])([\\/])([1-9][0-9])$",message="Must be formatted MM/YY")
private String ccException;

@Digits(integer=3,fraction=0,message="Invalid CVV") //它的值包含三位数字
private String ccCVV;
}

在表单绑定的时候进行校验

让表单在Post提交至对应的控制器方法时执行对应的校验。@Valid注解会告诉SpringMVC要对提交的Taco对象进行校验,而校验时机是在它绑定完成表单数据之后、调用processDesign()之前。如果存在校验错误,那个这个方法将不会处理Taco对象并返回“design”视图名,表单会重复展现。

@PostMapping
public String processDesign(@Valid Taco design,Errors errors){
if(errors.hasErrors()){
return "design";
}
log.info("processing design:"+design);
return "redict:/orders/current";
}

展现校验的错误

<label for="ccNumber">Credit Cart #:</label>
<input type="text" th:field="*{ccNumber}"/>
<span class="validationError"
th:if="${#fields.hasErrors('ccNumber')}"
th:errors="*{ccNumber}" >
CC Num Error
</span>