logger.info(“url={}”,request.getRequestURI());
// /method
logger.info(“method={}”,request.getMethod());
//ip
logger.info(“ip={}”,request.getRemoteAddr());
//类方法
logger.info(“class_method={}”,joinPoint.getSignature().getDeclaringTypeName() + “.” + joinPoint.getSignature().getName());
//参数
logger.info(“args={}”, joinPoint.getArgs());
//
System.out.println(“前aop”);
}
@After(“log()”)
public void doAfter(){
System.out.println(“后aop”);
}
@AfterReturning(returning = “object”,pointcut = “log()”)
public void doAfterReturning(Object object){
logger.info(“response={}”,object.toString());
}
}
表单的验证
第一步,先在实体类里加验证注释
-
@Size
-
@Min
-
@Max
-
@Pattern
。。。。
@Table(name=“t_user”)
@Entity
public class user {
@Id
@GeneratedValue
private Integer id;
@Size(min = 2, max = 20, message = “姓名长度必须大于 2 且小于 20 字”)
private String name;
private String password;
@Min(value=18,message=“年龄必须大于18岁”)
@Max(value=60,message = “年龄必须小于60岁”)
private Integer age;
@Pattern(regexp = “(男)|(女)”,message = “性别只能为男,女”)
private String sex;
@Pattern(regexp=“[0-9]{11}”,message = “手机号为11位”)
private String phone;
#省略getter、setter方法
}
第二步:在UserController里相应方法形参里加@Valid
@RestController
@RequestMapping(“/user”)
public class UserController {
@Autowired
UserService us;
@GetMapping(“/save”)
public Result save(@Valid user user,BindingResult bindingResult){
if (bindingResult.hasErrors()){
return ResultUtil.error(bindingResult.getFieldError().getDefaultMessage());
}
return ResultUtil.success(us.addUser(user));
}
}
异常统一处理(涉及到新建自定义异常类、管理错误编号、统一格式返回信息)
统一的返回信息样式(save)
成功的:
{
“code”: 0,
“msg”: “成功”,
“data”: {
“id”: 17,
“name”: “xxxxx”,
“password”: null,
“age”: null,
“sex”: null,
“phone”: null
}
}
失败的:
{
“code”: 1,
“msg”: “姓名长度必须大于 2 且小于 20 字”,
“data”: null
}
统一异常处理具体步骤
第一步:新建一个统一返回信息的类
public class Result {
//错误码
private Integer code;
//提示信息
private String msg;
//具体的内容
private T data;
public Result() {
}
public Result(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
}
第二步:新建一个统一管理异常编号的枚举类
public enum ResultEnum {
UNKNOW_ERROR(-1,“未知错误”),
SUCCESS(0, “成功”),
ERROR(1,“”),
YOUNG(100,“你正处于职业发展期”),
OLD(101,“你马上就要退休了”),
;
private Integer code;
private String msg;
ResultEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
[外链图片转存中…(img-CVIM37Ee-1711824326504)]
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!