1.表单验证:
实体类添加:
@Min(value = 18 ,message = "未成年少女禁止入内!")最小值限制为18,如果小于18则返回message中的信息
注入校验,获得校验结果信息
public Girl girlAdd(@Valid Girl girl , BindingResult bindingResult){ if(bindingResult.hasErrors()){ System.out.println(bindingResult.getFieldError().getDefaultMessage()); return null; } girl.setCupSize(girl.getCupSize()); girl.setAge(girl.getAge()); return girlRepository.save(girl); }
BindingResult 验证不通过时进行返回信息的对象
2.使用AOP处理请求
AOP 将通用逻辑从业务逻辑中分离出来
使用AOP第一步,添加依赖: spring-boot-starter-aop

使用拦截器实例:

拦截器的改进写法: 为了避免代码重复书写,定义一个公用方法,@Pointcut注解声明切入点 @Before @After 两注解直接复用该方法切入点
@Aspect @Component public class HttpAspect { private final static Logger logger= LoggerFactory.getLogger(HttpAspect.class); @Pointcut("execution(public * com.example.project.web.CustomerContorller.*(..))") public void log(){ } @Before("log()") public void doBefore(){ logger.info("aaaa"); } @After("log()") public void doAfter(){ logger.info("bbbb"); } }
拦截请求:
@Before("log()")
public void doBefore(JoinPoint joinPoint) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = (HttpServletRequest) attributes.getRequest();
logger.info("url={}", request.getRequestURL());
logger.info("method={}", request.getMethod());
logger.info("ip={}", request.getRemoteAddr());
logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
logger.info("args ={}", joinPoint.getArgs());
logger.info("111111111111111111111111111111");
}
@AfterReturning(returning = "object", pointcut = "log()")//获取请求结果的内容
public void doAfterReturn(Object object) {
logger.info("response={}", object);
}
把请求的返回结果写成工具类:

3.统一异常处理:
自定义异常类:为什么要继承,因为spring只对RunTimeException进行事务回滚

业务层直接向外抛异常:

自定义异常处理类:遮盖部分是getMessage()

自定义枚举类,统一异常的管理:
没有set方法哦,因为不需要set

4.单元测试:
三个注解为, 1. @RunWith(SpringRunner.class)现在要在测试环境中跑,底层使用的是junit测试工具 2. @SpringBootTest 将启动整个spring工程 3. @AutoConfigureMockMvc
mock:仿制 perform:执行
自动注入后,调用mockMvc.perform(MockMvcRequestBuilders.get("[url]")).andExpect(MockMvcResultMatchers.status().isOk());

----------天道酬勤----------------
浙公网安备 33010602011771号