目录
1、Caching
1.1、Supported Cache Providers
2、Hazelcast
3、Quartz Scheduler
4、Sending Email
5、Validation
5.1、验证手机号是否有效示例
5.1.1、定义验证注解类
import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { MobileValidator.class })
public @interface IsMobile {
boolean required() default true;
String message() default "手机号码格式错误";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
5.1.2、定义验证核心类
import static org.springframework.util.StringUtils.hasText;
import java.util.regex.Pattern;
public class MobileValidator implements javax.validation.ConstraintValidator<IsMobile, String> {
private static final Pattern mobile_pattern = Pattern.compile("[1]([3-9])[0-9]{9}$");
private boolean required = false;
@Override
public boolean isValid(String value, javax.validation.ConstraintValidatorContext context) {
if (required) {
return isMobile(value);
} else {
if (!hasText(value)) {
return true;
} else {
return isMobile(value);
}
}
}
@Override
public void initialize(IsMobile constraintAnnotation) {
required = constraintAnnotation.required();
}
private boolean isMobile(String mobile) {
if (!hasText(mobile)) {
return false;
}
return mobile_pattern.matcher(mobile).matches();
}
}
5.1.3、验证异常统一处理
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public Map<String, Object> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
return new HashMap<String, Object>(2) {
private static final long serialVersionUID = 6073161079995491657L;
{
put("code", 500);
put("msg", e.getBindingResult().getFieldError().getDefaultMessage());
}
};
}
}
5.1.4、控制器引入验证
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import javax.validation.constraints.NotBlank;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.cnblogs.javalouvre.controller.validator.IsMobile;
@RestController
public class IndexController {
@PostMapping(path = "/")
public Map<String, Object> execute(@Validated @RequestBody User user) {
return new HashMap<String, Object>(3) {
private static final long serialVersionUID = 6073161079995491657L;
{
put("code", 1);
put("msg", "OK");
put("data", Collections.singletonMap("num", UUID.randomUUID().toString().replace("-", "")));
}
};
}
}
class User {
@NotBlank(message = "手机号不可为空")
@IsMobile
private String mobile;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
5.1.5、启动服务验证
5.1.5.1、验证正确
$ curl -L -X POST 'http://127.0.0.1:8080' \
> -H 'Content-Type: application/json' \
> --data-raw '{
> "mobile": "13800138000"
> }'
{"msg":"OK","data":{"num":"94694a9e567241999bd4259aca7b7e7a"},"code":1}
5.1.5.2、验证失败
$ curl -L -X POST 'http://127.0.0.1:8080' -H 'Content-Type: application/json' --data-raw '{
"mobile": "03800138000"
}'
{"msg":"手机号码格式错误","code":500}
6、Calling REST Services
7、Web Services
8、Distributed Transactions With JTA
9、What to Read Next
原文地址:http://www.cnblogs.com/javalouvre/p/16867843.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性