构建领域类
引用的领域类指的是它所要解决的主体范围:也就是会影响到对应用理解的理念和概念。如下所示:
@Data
@RequiredAresConstructor
public class Ingrredient {
private final String id;
private final String name;
private final Type type;
public static enum Type {
WRAP,PROTEIN,VEGGIES,CHEESE,SAUSE
}
}
我们使用了Lombok的库,所提供的类级别的 @Data 注解能告诉Lombok生成所有所缺失的如getter,setter,以及equals(),hashCode(),toString()等方法。同时还能生成所有以final属性作为参数的构造器。
创建控制器类
在Spring MVC框架中,控制器是重要的参与者。它们的主要职责是处理HTTP请求,要么将请求传递给视图以便于渲染HTML(浏览器展现),要么直接将数据写入响应体(RESTful)
@Slf4j注解由lombok提供,应用在类级别的注解,在运行时,它会在这个类中自动生成一个SLF4J(Simple Logging Facade for Java)Logger。这个简单的注解和在类中通过如下代码显式声明的效果时一样的:
private static final org.slf4j.logger log =
org.slf4j.LoggerFactory.getLogge(xxController.class);
@Controller 为类级别注解,会将这个类识别为控制器,并且将其作为组件扫描的候选者,所以Spring会发现它并自动创建一个该类实例,并将该实例作为Spring应用上下文中的Bean。
@RequstMapping 注解用到类级别的时候,它能够指定该控制器所处理的请求类型。如会处理路径以“/design”开头的请求。
Spring MVC的请求映射注解
注解 | 描述 |
---|---|
@RequestMapping | 通用的请求处理 |
@GetMapping | 处理HTTP GET 请求 |
@PostMapping | 处理HTTP POST 请求 |
@PutMapping | 处理HTTP PUT 请求 |
DeleteMapping | 处理HTTP DELETE 请求 |
PatchMapping | 处理HTTP PATCH 请求 |
校验输入
Spring支持Java的Bean校验API(Bean Validation API,也被称为JSR-303)。借助Spring Boot,Validation API 以及 Validation API的HIbernate实现将会作为Spring Boot web starter的传递性依赖自动添加到项目中。
@NotNUll 确保属性不为空或null
@Size 限定属性的值
@NotBlank 确保用户没有提交空白字段
@CreditCardNumber 声明该属性的值必须是和合法的信用卡号,它要能通过Luhn算法检查
@Pattern 可提供正则表达式来进行校验
@Digits 限定属性值
所有的校验注解都包含了一个message属性,该属性定义了当输入的信息不满足声明的校验规则时要给用户展现的信息。
@PostMapping
public String processDesign(@Valid Taco design,Errors errors) {
if(errors.hasErrors()) {
```
}
```
}
@Valid 注解会告诉Spring MVC 要对提交的Taco对象进行校验,如果存在校验错误,那么这些错误的细节将会捕获到一个Errors对象中并传递给 processDesign()。